Implement 5th order Adams-Bashforth pusher #77
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR implements the 5th order Adams-Bashforth (AB5) pusher for the plasma particles in the Baxevanis wakefield model. This is a multi-step method that can provide a factor ~4 speedup over the original 4th order Runge-Kutta (RK4) pusher. This is because the RK4 method, although single-step, generates 3 substeps whose information is discarded after pushing. In contrast, AB5 simply reuses the information from the previous 5 steps. As a result, this pusher reduces by a factor 4 the amount of times that B_theta, psi and its derivatives need to be computed at the location of the plasma particles.
Implementing this pusher has also been a good chance to refactor the Baxevanis model, which includes the following changes:
PlasmaParticles
class has been implemented. This class contains the slice of plasma particles to be evolved and preallocates all the necessary arrays to compute its evolution (as opposed to before, where new arrays were being continuously generated).