xfields 0.22.1__tar.gz → 0.22.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 (181) hide show
  1. {xfields-0.22.1/xfields.egg-info → xfields-0.22.2}/PKG-INFO +1 -1
  2. xfields-0.22.2/xfields/_version.py +1 -0
  3. {xfields-0.22.1 → xfields-0.22.2}/xfields/fieldmaps/bigaussian_src/bigaussian.h +4 -2
  4. {xfields-0.22.1 → xfields-0.22.2/xfields.egg-info}/PKG-INFO +1 -1
  5. {xfields-0.22.1 → xfields-0.22.2}/xfields.egg-info/SOURCES.txt +0 -69
  6. xfields-0.22.1/.gitignore +0 -13
  7. xfields-0.22.1/contributors_and_credits.txt +0 -16
  8. xfields-0.22.1/examples/000_sphere/.gitignore +0 -1
  9. xfields-0.22.1/examples/000_sphere/000_sphere_xfields3D.py +0 -167
  10. xfields-0.22.1/examples/000_sphere/001_sphere_xfields2p5D.py +0 -170
  11. xfields-0.22.1/examples/001_spacecharge/000_spacecharge_example.py +0 -152
  12. xfields-0.22.1/examples/001_spacecharge/001_shared_fieldmap.py +0 -152
  13. xfields-0.22.1/examples/001_spacecharge/002_spacecharge_with_losses.py +0 -33
  14. xfields-0.22.1/examples/002_beambeam/000_beambeam.py +0 -191
  15. xfields-0.22.1/examples/002_beambeam/001_beambeam3d.py +0 -165
  16. xfields-0.22.1/examples/002_beambeam/002_beambeam3d_old_interface.py +0 -136
  17. xfields-0.22.1/examples/002_beambeam/003_beambeam3d_strongstrong_track.py +0 -188
  18. xfields-0.22.1/examples/002_beambeam/004_beambeam2d_strongstrong_pyheadtail.py +0 -215
  19. xfields-0.22.1/examples/002_beambeam/005_beambeam6d_strongstrong_pipeline.py +0 -201
  20. xfields-0.22.1/examples/002_beambeam/006_beambeam6d_strongstrong_pipeline_MPI2Procs.py +0 -221
  21. xfields-0.22.1/examples/002_beambeam/007_beambeam3d_beamstrahlung.py +0 -381
  22. xfields-0.22.1/examples/002_beambeam/008_beambeam6d_collective_beamstrahlung.py +0 -392
  23. xfields-0.22.1/examples/002_beambeam/009_constant_charge_slicing.py +0 -46
  24. xfields-0.22.1/examples/002_beambeam/010_beambeam2d_strongstrong_pipeline.py +0 -167
  25. xfields-0.22.1/examples/002_beambeam/010_beambeam2d_weakstrong.py +0 -115
  26. xfields-0.22.1/examples/002_beambeam/011a_inspect_kick_vs_zeta_hirata.py +0 -98
  27. xfields-0.22.1/examples/002_beambeam/011b_lhc_one_bb.py +0 -65
  28. xfields-0.22.1/examples/002_beambeam/011c_dev_pic.py +0 -313
  29. xfields-0.22.1/examples/002_beambeam/011d_pic_pipeline.py +0 -152
  30. xfields-0.22.1/examples/002_beambeam/011e_multiple_kicks_multiple_turns.py +0 -232
  31. xfields-0.22.1/examples/002_beambeam/011g_pic_pipeline_gpu.py +0 -164
  32. xfields-0.22.1/examples/003_electronlens/electronlens_interpolated_ideal.py +0 -88
  33. xfields-0.22.1/examples/004_fadeeva/000_check_fadeeva.py +0 -139
  34. xfields-0.22.1/examples/005_ibs/000_growth_rates_from_parameters_no_vdisp.py +0 -118
  35. xfields-0.22.1/examples/005_ibs/001_growth_rates_from_parameters_with_vdisp.py +0 -75
  36. xfields-0.22.1/examples/005_ibs/002_growth_rates_from_particles.py +0 -118
  37. xfields-0.22.1/examples/005_ibs/003_tracking_with_kicks.py +0 -66
  38. xfields-0.22.1/examples/005_ibs/004_tracking_with_kicks_tbt_emittances.py +0 -94
  39. xfields-0.22.1/examples/longitudinal_kick_in_spacecharge/000_gaussian_3d.py +0 -140
  40. xfields-0.22.1/examples/longitudinal_kick_in_spacecharge/001_dev_spacecharge.py +0 -96
  41. xfields-0.22.1/examples/longitudinal_kick_in_spacecharge/002_sps_ion.py +0 -124
  42. xfields-0.22.1/examples/longitudinal_kick_in_spacecharge/003_sps_ion_with_builtin_z_kick.py +0 -118
  43. xfields-0.22.1/examples/longitudinal_kick_in_spacecharge/004_qgaussian_derivative.py +0 -63
  44. xfields-0.22.1/examples/longitudinal_kick_in_spacecharge/sps_ion_2021.json +0 -1
  45. xfields-0.22.1/examples/slicer/000_dev.py +0 -876
  46. xfields-0.22.1/examples/slicer/001_slicer_operations.py +0 -29
  47. xfields-0.22.1/examples/slicer/002a_example_slicer.py +0 -142
  48. xfields-0.22.1/examples/slicer/002b_example_slicer_gpu.py +0 -145
  49. xfields-0.22.1/examples/slicer/003_multilog.py +0 -22
  50. xfields-0.22.1/examples/slicer/004_log_moments.py +0 -151
  51. xfields-0.22.1/examples/slicer/005a_moment_profile.py +0 -75
  52. xfields-0.22.1/examples/slicer/005b_moment_profile_gpu.py +0 -89
  53. xfields-0.22.1/examples/slicer/005c_moment_profile_from_wake.py +0 -53
  54. xfields-0.22.1/examples/slicer/005d_moment_profile_from_wake_gpu.py +0 -59
  55. xfields-0.22.1/mktest +0 -1
  56. xfields-0.22.1/release.sh +0 -20
  57. xfields-0.22.1/requirements.txt +0 -2
  58. xfields-0.22.1/test_data/HLLHC_wake.dat +0 -2801
  59. xfields-0.22.1/test_data/pyecloud_pinch/Pinch_creation/.gitignore +0 -4
  60. xfields-0.22.1/test_data/pyecloud_pinch/Pinch_creation/000_buildup.py +0 -4
  61. xfields-0.22.1/test_data/pyecloud_pinch/Pinch_creation/001_pinch.py +0 -131
  62. xfields-0.22.1/test_data/pyecloud_pinch/Pinch_creation/beam.beam +0 -33
  63. xfields-0.22.1/test_data/pyecloud_pinch/Pinch_creation/filemanager.py +0 -54
  64. xfields-0.22.1/test_data/pyecloud_pinch/Pinch_creation/machine_parameters.input +0 -51
  65. xfields-0.22.1/test_data/pyecloud_pinch/Pinch_creation/secondary_emission_parameters.input +0 -16
  66. xfields-0.22.1/test_data/pyecloud_pinch/Pinch_creation/simulation_parameters.input +0 -81
  67. xfields-0.22.1/test_data/pyecloud_pinch/README.md +0 -35
  68. xfields-0.22.1/test_data/pyecloud_pinch/eclouds.json +0 -5838
  69. xfields-0.22.1/test_data/pyecloud_pinch/refined_Pinch_MTI1.0_MLI1.0_DTO2.0_DLO1.0.h5 +0 -0
  70. xfields-0.22.1/test_data/test_beamstrahlung/README.txt +0 -3
  71. xfields-0.22.1/test_data/test_beamstrahlung/test_beamstrahlung_guineapig_ttbar2_beamstrahlung_photon_hist.txt +0 -9
  72. xfields-0.22.1/tests/ibs_conftest.py +0 -158
  73. xfields-0.22.1/tests/pytest_onebyone.sh +0 -7
  74. xfields-0.22.1/update_cprght_statement.py +0 -48
  75. xfields-0.22.1/xfields/_version.py +0 -1
  76. {xfields-0.22.1 → xfields-0.22.2}/LICENSE +0 -0
  77. {xfields-0.22.1 → xfields-0.22.2}/MANIFEST.in +0 -0
  78. {xfields-0.22.1 → xfields-0.22.2}/README.md +0 -0
  79. {xfields-0.22.1 → xfields-0.22.2}/pyproject.toml +0 -0
  80. {xfields-0.22.1 → xfields-0.22.2}/setup.cfg +0 -0
  81. {xfields-0.22.1 → xfields-0.22.2}/setup.py +0 -0
  82. {xfields-0.22.1 → xfields-0.22.2}/tests/test_beambeam2d.py +0 -0
  83. {xfields-0.22.1 → xfields-0.22.2}/tests/test_beambeam3d_part1.py +0 -0
  84. {xfields-0.22.1 → xfields-0.22.2}/tests/test_beambeam3d_part2.py +0 -0
  85. {xfields-0.22.1 → xfields-0.22.2}/tests/test_beambeam_pic.py +0 -0
  86. {xfields-0.22.1 → xfields-0.22.2}/tests/test_beambeamstrongstrong2d.py +0 -0
  87. {xfields-0.22.1 → xfields-0.22.2}/tests/test_beambeamstrongstrong2d_pi.py +0 -0
  88. {xfields-0.22.1 → xfields-0.22.2}/tests/test_beambeamstrongstrong3d.py +0 -0
  89. {xfields-0.22.1 → xfields-0.22.2}/tests/test_beambeamstrongstrong3d_pi.py +0 -0
  90. {xfields-0.22.1 → xfields-0.22.2}/tests/test_beamstrahlung.py +0 -0
  91. {xfields-0.22.1 → xfields-0.22.2}/tests/test_bhabha.py +0 -0
  92. {xfields-0.22.1 → xfields-0.22.2}/tests/test_cerrf.py +0 -0
  93. {xfields-0.22.1 → xfields-0.22.2}/tests/test_compressed_profile_interp_result.py +0 -0
  94. {xfields-0.22.1 → xfields-0.22.2}/tests/test_constant_charge_slicing.py +0 -0
  95. {xfields-0.22.1 → xfields-0.22.2}/tests/test_electroncloud.py +0 -0
  96. {xfields-0.22.1 → xfields-0.22.2}/tests/test_electronlens_interpolated.py +0 -0
  97. {xfields-0.22.1 → xfields-0.22.2}/tests/test_element_with_slicer_filling_scheme.py +0 -0
  98. {xfields-0.22.1 → xfields-0.22.2}/tests/test_ibs_growth_rates.py +0 -0
  99. {xfields-0.22.1 → xfields-0.22.2}/tests/test_ibs_kicks.py +0 -0
  100. {xfields-0.22.1 → xfields-0.22.2}/tests/test_iptocp_strongstrong.py +0 -0
  101. {xfields-0.22.1 → xfields-0.22.2}/tests/test_lumi.py +0 -0
  102. {xfields-0.22.1 → xfields-0.22.2}/tests/test_mean_std.py +0 -0
  103. {xfields-0.22.1 → xfields-0.22.2}/tests/test_profiles.py +0 -0
  104. {xfields-0.22.1 → xfields-0.22.2}/tests/test_slicer.py +0 -0
  105. {xfields-0.22.1 → xfields-0.22.2}/tests/test_spacecharge.py +0 -0
  106. {xfields-0.22.1 → xfields-0.22.2}/tests/test_temp_slicer.py +0 -0
  107. {xfields-0.22.1 → xfields-0.22.2}/xfields/__init__.py +0 -0
  108. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/__init__.py +0 -0
  109. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/beambeam2d.py +0 -0
  110. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/beambeam3d.py +0 -0
  111. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/beambeam3dpic.py +0 -0
  112. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/beambeam_src/beambeam.h +0 -0
  113. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/beambeam_src/beambeam2d.h +0 -0
  114. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/beambeam_src/beambeam3d.h +0 -0
  115. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/beambeam_src/beambeam3d_methods_for_strongstrong.h +0 -0
  116. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/beambeam_src/beambeam3d_ref_frame_changes.h +0 -0
  117. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/beambeam_src/beambeam3d_transport_sigmas.h +0 -0
  118. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/beambeam_src/beambeampic_methods.h +0 -0
  119. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/electroncloud.py +0 -0
  120. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/electroncloud_src/electroncloud.h +0 -0
  121. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/electronlens_interpolated.py +0 -0
  122. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/electronlens_src/electronlens_interpolated.h +0 -0
  123. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/element_with_slicer.py +0 -0
  124. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/spacecharge.py +0 -0
  125. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/spacecharge_src/spacecharge3d.h +0 -0
  126. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/spacecharge_src/spacechargebigaussian.h +0 -0
  127. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/temp_slicer.py +0 -0
  128. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/waketracker/__init__.py +0 -0
  129. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/waketracker/convolution.py +0 -0
  130. {xfields-0.22.1 → xfields-0.22.2}/xfields/beam_elements/waketracker/waketracker.py +0 -0
  131. {xfields-0.22.1 → xfields-0.22.2}/xfields/config_tools/__init__.py +0 -0
  132. {xfields-0.22.1 → xfields-0.22.2}/xfields/config_tools/beambeam_config_tools/__init__.py +0 -0
  133. {xfields-0.22.1 → xfields-0.22.2}/xfields/config_tools/beambeam_config_tools/_madpoint.py +0 -0
  134. {xfields-0.22.1 → xfields-0.22.2}/xfields/config_tools/beambeam_config_tools/config_tools.py +0 -0
  135. {xfields-0.22.1 → xfields-0.22.2}/xfields/config_tools/beambeam_config_tools/orbit_dependent_configuration_tools.py +0 -0
  136. {xfields-0.22.1 → xfields-0.22.2}/xfields/config_tools/electroncloud_config_tools.py +0 -0
  137. {xfields-0.22.1 → xfields-0.22.2}/xfields/config_tools/spacecharge_config_tools.py +0 -0
  138. {xfields-0.22.1 → xfields-0.22.2}/xfields/fieldmaps/__init__.py +0 -0
  139. {xfields-0.22.1 → xfields-0.22.2}/xfields/fieldmaps/bigaussian.py +0 -0
  140. {xfields-0.22.1 → xfields-0.22.2}/xfields/fieldmaps/bigaussian_src/bigaussian_fieldmap.h +0 -0
  141. {xfields-0.22.1 → xfields-0.22.2}/xfields/fieldmaps/bigaussian_src/compute_gx_gy.h +0 -0
  142. {xfields-0.22.1 → xfields-0.22.2}/xfields/fieldmaps/bigaussian_src/faddeeva.h +0 -0
  143. {xfields-0.22.1 → xfields-0.22.2}/xfields/fieldmaps/bigaussian_src/faddeeva_cernlib.h +0 -0
  144. {xfields-0.22.1 → xfields-0.22.2}/xfields/fieldmaps/bigaussian_src/faddeeva_mit.h +0 -0
  145. {xfields-0.22.1 → xfields-0.22.2}/xfields/fieldmaps/interpolated.py +0 -0
  146. {xfields-0.22.1 → xfields-0.22.2}/xfields/fieldmaps/interpolated_src/central_diff.h +0 -0
  147. {xfields-0.22.1 → xfields-0.22.2}/xfields/fieldmaps/interpolated_src/charge_deposition.h +0 -0
  148. {xfields-0.22.1 → xfields-0.22.2}/xfields/fieldmaps/interpolated_src/cubic_interpolators.h +0 -0
  149. {xfields-0.22.1 → xfields-0.22.2}/xfields/fieldmaps/interpolated_src/linear_interpolators.h +0 -0
  150. {xfields-0.22.1 → xfields-0.22.2}/xfields/fieldmaps/interpolated_src/tricubic_coefficients.h +0 -0
  151. {xfields-0.22.1 → xfields-0.22.2}/xfields/fieldmaps/tricubicinterpolated.py +0 -0
  152. {xfields-0.22.1 → xfields-0.22.2}/xfields/general.py +0 -0
  153. {xfields-0.22.1 → xfields-0.22.2}/xfields/headers/beamstrahlung_spectrum.h +0 -0
  154. {xfields-0.22.1 → xfields-0.22.2}/xfields/headers/bhabha_spectrum.h +0 -0
  155. {xfields-0.22.1 → xfields-0.22.2}/xfields/headers/compressed_profile.h +0 -0
  156. {xfields-0.22.1 → xfields-0.22.2}/xfields/headers/compute_slice_moments.h +0 -0
  157. {xfields-0.22.1 → xfields-0.22.2}/xfields/headers/constants.h +0 -0
  158. {xfields-0.22.1 → xfields-0.22.2}/xfields/headers/particle_states.h +0 -0
  159. {xfields-0.22.1 → xfields-0.22.2}/xfields/headers/power_n.h +0 -0
  160. {xfields-0.22.1 → xfields-0.22.2}/xfields/headers/sincos.h +0 -0
  161. {xfields-0.22.1 → xfields-0.22.2}/xfields/ibs/__init__.py +0 -0
  162. {xfields-0.22.1 → xfields-0.22.2}/xfields/ibs/_analytical.py +0 -0
  163. {xfields-0.22.1 → xfields-0.22.2}/xfields/ibs/_api.py +0 -0
  164. {xfields-0.22.1 → xfields-0.22.2}/xfields/ibs/_formulary.py +0 -0
  165. {xfields-0.22.1 → xfields-0.22.2}/xfields/ibs/_kicks.py +0 -0
  166. {xfields-0.22.1 → xfields-0.22.2}/xfields/longitudinal_profiles/__init__.py +0 -0
  167. {xfields-0.22.1 → xfields-0.22.2}/xfields/longitudinal_profiles/coasting.py +0 -0
  168. {xfields-0.22.1 → xfields-0.22.2}/xfields/longitudinal_profiles/qgaussian.py +0 -0
  169. {xfields-0.22.1 → xfields-0.22.2}/xfields/longitudinal_profiles/qgaussian_src/qgaussian.h +0 -0
  170. {xfields-0.22.1 → xfields-0.22.2}/xfields/slicers/__init__.py +0 -0
  171. {xfields-0.22.1 → xfields-0.22.2}/xfields/slicers/compressed_profile.py +0 -0
  172. {xfields-0.22.1 → xfields-0.22.2}/xfields/slicers/slicers_src/uniform_bin_slicer.h +0 -0
  173. {xfields-0.22.1 → xfields-0.22.2}/xfields/slicers/uniform.py +0 -0
  174. {xfields-0.22.1 → xfields-0.22.2}/xfields/solvers/__init__.py +0 -0
  175. {xfields-0.22.1 → xfields-0.22.2}/xfields/solvers/base.py +0 -0
  176. {xfields-0.22.1 → xfields-0.22.2}/xfields/solvers/fftsolvers.py +0 -0
  177. {xfields-0.22.1 → xfields-0.22.2}/xfields/test_support/__init__.py +0 -0
  178. {xfields-0.22.1 → xfields-0.22.2}/xfields/test_support/temp_makepart.py +0 -0
  179. {xfields-0.22.1 → xfields-0.22.2}/xfields.egg-info/dependency_links.txt +0 -0
  180. {xfields-0.22.1 → xfields-0.22.2}/xfields.egg-info/requires.txt +0 -0
  181. {xfields-0.22.1 → xfields-0.22.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.22.1
3
+ Version: 0.22.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.22.2"
@@ -39,8 +39,10 @@ void get_transv_field_gauss_round(
39
39
  double r2, temp;
40
40
 
41
41
  r2 = (x-Delta_x)*(x-Delta_x)+(y-Delta_y)*(y-Delta_y);
42
- if (r2<1e-20) temp = sqrt(r2)/(2.*PI*EPSILON_0*sigma); //linearised
43
- else temp = (1-exp(-0.5*r2/(sigma*sigma)))/(2.*PI*EPSILON_0*r2);
42
+ double const inv_sig2 = 1./(sigma*sigma);
43
+ double const r2_sig2 = r2 * inv_sig2;
44
+ if (r2_sig2<1e-10) temp = inv_sig2/(4.*PI*EPSILON_0); //linearised
45
+ else temp = inv_sig2 * (1-exp(-0.5*r2_sig2))/(2.*PI*EPSILON_0*r2_sig2);
44
46
 
45
47
  (*Ex) = temp * (x-Delta_x);
46
48
  (*Ey) = temp * (y-Delta_y);
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: xfields
3
- Version: 0.22.1
3
+ Version: 0.22.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_from_parameters_no_vdisp.py
39
- examples/005_ibs/001_growth_rates_from_parameters_with_vdisp.py
40
- examples/005_ibs/002_growth_rates_from_particles.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_beambeam2d.py
76
7
  tests/test_beambeam3d_part1.py
77
8
  tests/test_beambeam3d_part2.py
xfields-0.22.1/.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()
@@ -1,152 +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
-
10
- from xobjects import ContextCpu, ContextCupy, ContextPyopencl
11
- import xtrack as xt
12
- import xpart as xp
13
-
14
- ###################
15
- # Choose context #
16
- ###################
17
-
18
- context = ContextCpu(omp_num_threads=0) # no omp
19
- #context = ContextCpu(omp_num_threads=48) # omp
20
- #context = ContextCupy(default_block_size=256)
21
- #context = ContextPyopencl('0.0')
22
-
23
- print(repr(context))
24
-
25
- #################################
26
- # Generate particles and probes #
27
- #################################
28
-
29
- n_macroparticles = int(1e6)
30
- bunch_intensity = 2.5e11
31
- sigma_x = 3e-3
32
- sigma_y = 2e-3
33
- sigma_z = 30e-2
34
- p0c = 25.92e9
35
- mass = xp.pmass
36
- theta_probes = 30 * np.pi/180
37
- r_max_probes = 2e-2
38
- z_probes = 1.2*sigma_z
39
- n_probes = 1000
40
-
41
- from xfields.test_support.temp_makepart import generate_particles_object
42
- (particles_dtk, r_probes, x_probes,
43
- y_probes, z_probes) = generate_particles_object(
44
- n_macroparticles,
45
- bunch_intensity,
46
- sigma_x,
47
- sigma_y,
48
- sigma_z,
49
- p0c,
50
- mass,
51
- n_probes,
52
- r_max_probes,
53
- z_probes,
54
- theta_probes)
55
- particles = xp.Particles(
56
- _context=context, **particles_dtk.to_dict())
57
-
58
-
59
- ######################
60
- # Space charge (PIC) #
61
- ######################
62
-
63
- x_lim = 5.*sigma_x
64
- y_lim = 5.*sigma_y
65
- z_lim = 5.*sigma_z
66
-
67
- from xfields import SpaceCharge3D
68
- spcharge = SpaceCharge3D(
69
- _context=context,
70
- length=1, update_on_track=True, apply_z_kick=False,
71
- x_range=(-x_lim, x_lim),
72
- y_range=(-y_lim, y_lim),
73
- z_range=(-z_lim, z_lim),
74
- nx=256, ny=256, nz=100,
75
- # solver='FFTSolver2p5D',
76
- solver='FFTSolver2p5DAveraged',
77
- gamma0=particles_dtk.gamma0[0])
78
-
79
- spcharge.track(particles)
80
-
81
-
82
- #############################
83
- # Compare against ducktrack #
84
- #############################
85
-
86
-
87
- p2np = context.nparray_from_context_array
88
-
89
- from ducktrack import SCQGaussProfile, TestParticles
90
- scdtk = SCQGaussProfile(
91
- number_of_particles = bunch_intensity,
92
- bunchlength_rms=sigma_z,
93
- sigma_x=sigma_x,
94
- sigma_y=sigma_y,
95
- length=spcharge.length,
96
- x_co=0.,
97
- y_co=0.)
98
-
99
- p_dtk = TestParticles(p0c=p0c,
100
- mass=mass,
101
- x=x_probes.copy(),
102
- y=y_probes.copy(),
103
- zeta=z_probes.copy())
104
-
105
- scdtk.track(p_dtk)
106
-
107
- mask_inside_grid = ((np.abs(x_probes)<0.9*x_lim) &
108
- (np.abs(y_probes)<0.9*y_lim))
109
-
110
-
111
- import matplotlib.pyplot as plt
112
- plt.close('all')
113
- plt.figure(1)
114
- plt.subplot(211)
115
- plt.plot(r_probes, p_dtk.px, color='red')
116
- plt.plot(r_probes, p2np(particles.px[:n_probes]), color='blue',
117
- linestyle='--')
118
- plt.subplot(212)
119
- plt.plot(r_probes, p_dtk.py, color='red')
120
- plt.plot(r_probes, p2np(particles.py[:n_probes]), color='blue',
121
- linestyle='--')
122
-
123
- plt.figure(2)
124
- plt.subplot(111)
125
- tr_profile = spcharge.fieldmap.rho.sum(axis=0)
126
- for ii in range(tr_profile.shape[1]):
127
- tr_profile[:,ii] = tr_profile[:,ii]/tr_profile[:,ii].max()
128
- tr_profile = context.nparray_from_context_array(tr_profile)
129
- plt.plot(tr_profile)
130
-
131
- ###########
132
- # Time it #
133
- ###########
134
-
135
- n_rep = 5
136
-
137
- for _ in range(n_rep):
138
- t1 = time.time()
139
- spcharge.track(particles)
140
- context.synchronize()
141
- t2 = time.time()
142
- print(f'Time (full PIC): {(t2-t1)*1e3:.2f} ms')
143
-
144
- spcharge.update_on_track = False
145
- for _ in range(n_rep):
146
- t1 = time.time()
147
- spcharge.track(particles)
148
- context.synchronize()
149
- t2 = time.time()
150
- print(f'Time (interp only): {(t2-t1)*1e3:.2f} ms')
151
-
152
- plt.show()