-
Notifications
You must be signed in to change notification settings - Fork 41
Particle Tracing #734
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Particle Tracing #734
Conversation
| benchmark_name | dt(%) | dt(s) | t_new(s) | t_old(s) |
| -------------------------------------- | ---------------------- | ---------------------- | ---------------------- | ---------------------- |
test_build_transform_fft_lowres | -6.87 +/- 5.59 | -1.39e-03 +/- 1.13e-03 | 1.89e-02 +/- 1.3e-04 | 2.03e-02 +/- 1.1e-03 |
test_build_transform_fft_midres | -0.07 +/- 1.05 | -7.41e-05 +/- 1.17e-03 | 1.11e-01 +/- 5.0e-04 | 1.11e-01 +/- 1.1e-03 |
test_build_transform_fft_highres | -0.23 +/- 1.35 | -1.16e-03 +/- 6.99e-03 | 5.15e-01 +/- 3.3e-03 | 5.16e-01 +/- 6.2e-03 |
test_equilibrium_init_lowres | -1.72 +/- 2.08 | -1.47e-02 +/- 1.78e-02 | 8.44e-01 +/- 1.4e-02 | 8.59e-01 +/- 1.1e-02 |
test_equilibrium_init_medres | -1.55 +/- 1.40 | -1.98e-02 +/- 1.78e-02 | 1.26e+00 +/- 9.8e-03 | 1.27e+00 +/- 1.5e-02 |
test_equilibrium_init_highres | -0.21 +/- 0.83 | -6.46e-03 +/- 2.50e-02 | 3.02e+00 +/- 1.8e-02 | 3.02e+00 +/- 1.7e-02 |
test_objective_compile_dshape_current | -1.98 +/- 6.82 | -1.07e-01 +/- 3.68e-01 | 5.29e+00 +/- 2.9e-01 | 5.39e+00 +/- 2.2e-01 |
test_objective_compile_atf | -0.95 +/- 5.84 | -1.63e-01 +/- 1.00e+00 | 1.70e+01 +/- 7.2e-01 | 1.72e+01 +/- 7.0e-01 |
test_objective_compute_dshape_current | -1.08 +/- 1.06 | -3.60e-05 +/- 3.53e-05 | 3.31e-03 +/- 2.6e-05 | 3.34e-03 +/- 2.4e-05 |
test_objective_compute_atf | -2.37 +/- 0.94 | -2.64e-04 +/- 1.05e-04 | 1.09e-02 +/- 4.3e-05 | 1.12e-02 +/- 9.6e-05 |
test_objective_jac_dshape_current | -2.31 +/- 6.58 | -3.29e-03 +/- 9.36e-03 | 1.39e-01 +/- 5.2e-03 | 1.42e-01 +/- 7.8e-03 |
test_objective_jac_atf | -8.23 +/- 5.80 | -7.19e-01 +/- 5.06e-01 | 8.02e+00 +/- 5.0e-01 | 8.74e+00 +/- 8.0e-02 |
test_perturb_1 | -1.04 +/- 12.62 | -1.14e-01 +/- 1.38e+00 | 1.08e+01 +/- 9.2e-01 | 1.09e+01 +/- 1.0e+00 |
test_perturb_2 | -1.59 +/- 5.14 | -3.01e-01 +/- 9.70e-01 | 1.86e+01 +/- 6.0e-01 | 1.89e+01 +/- 7.6e-01 | |
| benchmark_name | dt(%) | dt(s) | t_new(s) | t_old(s) |
| -------------------------------------- | ---------------------- | ---------------------- | ---------------------- | ---------------------- |
test_build_transform_fft_lowres | +1.25 +/- 1.62 | +1.56e-04 +/- 2.02e-04 | 1.26e-02 +/- 1.9e-04 | 1.25e-02 +/- 8.1e-05 |
test_build_transform_fft_midres | -0.01 +/- 1.23 | -1.19e-05 +/- 1.13e-03 | 9.24e-02 +/- 7.0e-04 | 9.24e-02 +/- 9.0e-04 |
test_build_transform_fft_highres | +1.21 +/- 0.72 | +5.62e-03 +/- 3.32e-03 | 4.69e-01 +/- 1.9e-03 | 4.63e-01 +/- 2.7e-03 |
test_equilibrium_init_lowres | +2.70 +/- 1.62 | +2.13e-02 +/- 1.28e-02 | 8.12e-01 +/- 1.1e-02 | 7.91e-01 +/- 6.3e-03 |
test_equilibrium_init_medres | +1.58 +/- 1.37 | +2.23e-02 +/- 1.94e-02 | 1.43e+00 +/- 1.5e-02 | 1.41e+00 +/- 1.3e-02 |
test_equilibrium_init_highres | +0.61 +/- 1.32 | +2.54e-02 +/- 5.51e-02 | 4.21e+00 +/- 4.5e-02 | 4.18e+00 +/- 3.1e-02 |
test_objective_compile_dshape_current | +1.16 +/- 9.78 | +4.73e-02 +/- 3.98e-01 | 4.12e+00 +/- 3.3e-01 | 4.07e+00 +/- 2.3e-01 |
test_objective_compile_atf | -3.85 +/- 5.66 | -3.63e-01 +/- 5.34e-01 | 9.07e+00 +/- 3.2e-01 | 9.43e+00 +/- 4.3e-01 |
test_objective_compute_dshape_current | -0.85 +/- 1.95 | -1.84e-05 +/- 4.25e-05 | 2.16e-03 +/- 2.7e-05 | 2.18e-03 +/- 3.3e-05 |
test_objective_compute_atf | +1.72 +/- 1.21 | +1.30e-04 +/- 9.13e-05 | 7.70e-03 +/- 6.1e-05 | 7.57e-03 +/- 6.8e-05 |
test_objective_jac_dshape_current | -3.41 +/- 12.79 | -1.61e-03 +/- 6.03e-03 | 4.55e-02 +/- 3.8e-03 | 4.71e-02 +/- 4.7e-03 |
test_objective_jac_atf | -3.18 +/- 6.69 | -7.55e-02 +/- 1.59e-01 | 2.30e+00 +/- 7.4e-02 | 2.37e+00 +/- 1.4e-01 |
test_perturb_1 | -0.78 +/- 13.58 | -6.56e-02 +/- 1.14e+00 | 8.31e+00 +/- 7.7e-01 | 8.37e+00 +/- 8.4e-01 |
test_perturb_2 | -5.08 +/- 5.34 | -7.50e-01 +/- 7.88e-01 | 1.40e+01 +/- 5.5e-01 | 1.48e+01 +/- 5.7e-01 | |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #734 +/- ##
==========================================
- Coverage 95.72% 95.41% -0.31%
==========================================
Files 101 101
Lines 26349 26460 +111
==========================================
+ Hits 25223 25248 +25
- Misses 1126 1212 +86
🚀 New features to boost your workflow:
|
| benchmark_name | dt(%) | dt(s) | t_new(s) | t_old(s) |
| -------------------------------------- | ---------------------- | ---------------------- | ---------------------- | ---------------------- |
test_build_transform_fft_lowres | +1.24 +/- 7.18 | +6.73e-03 +/- 3.89e-02 | 5.49e-01 +/- 3.2e-02 | 5.43e-01 +/- 2.2e-02 |
test_equilibrium_init_medres | +1.81 +/- 1.75 | +7.03e-02 +/- 6.79e-02 | 3.95e+00 +/- 5.5e-02 | 3.88e+00 +/- 4.0e-02 |
test_equilibrium_init_highres | +0.45 +/- 2.48 | +2.17e-02 +/- 1.20e-01 | 4.85e+00 +/- 1.1e-01 | 4.83e+00 +/- 5.6e-02 |
test_objective_compile_dshape_current | +2.71 +/- 6.26 | +8.04e-02 +/- 1.86e-01 | 3.05e+00 +/- 1.4e-01 | 2.97e+00 +/- 1.2e-01 |
-test_objective_compute_dshape_current | +40.98 +/- 2.30 | +1.46e-03 +/- 8.20e-05 | 5.03e-03 +/- 6.3e-05 | 3.57e-03 +/- 5.2e-05 |
test_objective_jac_dshape_current | +5.55 +/- 6.03 | +2.11e-03 +/- 2.30e-03 | 4.02e-02 +/- 1.1e-03 | 3.81e-02 +/- 2.0e-03 |
-test_perturb_2 | +9.13 +/- 2.62 | +1.39e+00 +/- 3.99e-01 | 1.66e+01 +/- 1.8e-01 | 1.53e+01 +/- 3.6e-01 |
test_proximal_jac_atf_with_eq_update | +0.81 +/- 0.95 | +1.37e-01 +/- 1.61e-01 | 1.71e+01 +/- 1.3e-01 | 1.69e+01 +/- 9.3e-02 |
test_proximal_freeb_jac | -0.02 +/- 0.91 | -1.43e-03 +/- 5.27e-02 | 5.78e+00 +/- 3.6e-02 | 5.78e+00 +/- 3.8e-02 |
test_solve_fixed_iter_compiled | +5.22 +/- 2.59 | +9.41e-01 +/- 4.67e-01 | 1.90e+01 +/- 2.4e-01 | 1.80e+01 +/- 4.0e-01 |
-test_LinearConstraintProjection_build | +32.72 +/- 4.78 | +2.71e+00 +/- 3.96e-01 | 1.10e+01 +/- 2.9e-01 | 8.27e+00 +/- 2.7e-01 |
-test_objective_compute_ripple_spline | +11.67 +/- 2.75 | +3.88e-02 +/- 9.16e-03 | 3.72e-01 +/- 6.9e-03 | 3.33e-01 +/- 6.0e-03 |
test_objective_grad_ripple_spline | +3.04 +/- 3.11 | +4.49e-02 +/- 4.60e-02 | 1.52e+00 +/- 3.2e-02 | 1.48e+00 +/- 3.3e-02 |
test_build_transform_fft_midres | +0.30 +/- 8.00 | +1.60e-03 +/- 4.33e-02 | 5.43e-01 +/- 4.3e-02 | 5.41e-01 +/- 6.2e-03 |
test_build_transform_fft_highres | +0.50 +/- 3.01 | +4.13e-03 +/- 2.48e-02 | 8.28e-01 +/- 2.2e-02 | 8.24e-01 +/- 1.2e-02 |
test_equilibrium_init_lowres | -0.28 +/- 1.29 | -9.71e-03 +/- 4.56e-02 | 3.52e+00 +/- 3.1e-02 | 3.53e+00 +/- 3.3e-02 |
test_objective_compile_atf | +3.69 +/- 2.87 | +2.24e-01 +/- 1.75e-01 | 6.31e+00 +/- 1.6e-01 | 6.08e+00 +/- 7.3e-02 |
-test_objective_compute_atf | +62.84 +/- 3.01 | +5.72e-03 +/- 2.74e-04 | 1.48e-02 +/- 1.9e-04 | 9.11e-03 +/- 2.0e-04 |
test_objective_jac_atf | -0.02 +/- 1.84 | -2.77e-04 +/- 3.34e-02 | 1.81e+00 +/- 2.7e-02 | 1.81e+00 +/- 2.0e-02 |
-test_perturb_1 | +11.69 +/- 2.34 | +1.41e+00 +/- 2.84e-01 | 1.35e+01 +/- 2.4e-01 | 1.21e+01 +/- 1.6e-01 |
test_proximal_jac_atf | +0.35 +/- 0.80 | +2.76e-02 +/- 6.32e-02 | 7.91e+00 +/- 4.0e-02 | 7.88e+00 +/- 4.9e-02 |
test_proximal_freeb_compute | +7.51 +/- 3.69 | +1.22e-02 +/- 6.00e-03 | 1.75e-01 +/- 5.2e-03 | 1.63e-01 +/- 2.9e-03 |
test_solve_fixed_iter | +4.15 +/- 2.74 | +1.14e+00 +/- 7.52e-01 | 2.86e+01 +/- 4.7e-01 | 2.74e+01 +/- 5.8e-01 |
test_objective_compute_ripple | -0.56 +/- 1.40 | -1.59e-02 +/- 4.00e-02 | 2.83e+00 +/- 2.4e-02 | 2.85e+00 +/- 3.2e-02 |
test_objective_grad_ripple | +1.12 +/- 0.64 | +8.15e-02 +/- 4.70e-02 | 7.38e+00 +/- 4.3e-02 | 7.30e+00 +/- 1.9e-02 | |
|
If you want to get rid of some PRs, I can take this one. It looks interesting and I am bored:D |
Sure, main thing it needs is some tests, so probably just need to come up with some simple magnetic fields for which we know the trajectory analytically and make sure they agree. Some ideas:
|
|
Do you have a symplectic orbit solver to compare with? I have one that I can add to the test. |
Yeah I benchmarked against SIMPLE with rogerio, I'll try to dig up the data |
|
Close once #1820 is merged in |
This PR is a combination of #734 and #1410. The main structure is under discussion in #1657. - Adds particle tracing capabilities in ``desc.particles`` module. - Particle tracing is done via ``desc.particles.trace_particles`` function. - Particles can be initialized in couple different ways: - ``ManualParticleInitializerLab`` : Initializes particles at given positions in lab coordinates. - ``ManualParticleInitializerFlux`` : Initializes particles at given positions in flux coordinates. - ``CurveParticleInitializer`` : Initializes N particles on a given curve. - ``SurfaceParticleInitializer`` : Initializes N particles on a given surface. - Implemented particle trajectory models are: - ``VacuumGuidingCenterTrajectory`` : Integrates the particle motion by vacuum guiding center ODEs, conserving energy and mu. - Particle trajectories can be plotted with ``desc.plotting.plot_particle_trajectories`` function. We can delete #734 and #1410 once this is merged. --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: joaopedrobiu6 <joaopedrofbiu@tecnico.ulisboa.pt> Co-authored-by: Dario Panici <dpanici@princeton.edu> Co-authored-by: Daniel Dudt <33005725+ddudt@users.noreply.github.com> Co-authored-by: Dario Panici <37969854+dpanici@users.noreply.github.com> Co-authored-by: Rory Conlin <roryconlin@gmail.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Kaya Unalmis <kayaunalmis@proton.me> Co-authored-by: Rahul Gaur <19224702+rahulgaur104@users.noreply.github.com>
|
Closing as it is completed in #1820 |
Adds functionality for tracing particles in an arbitrary
MagneticField, using either guiding center or full orbit equations.