Skip to content
Snippets Groups Projects
Commit 49e93734 authored by Matthieu Schaller's avatar Matthieu Schaller
Browse files

Merge branch 'kill_drift' into 'master'

Only drift the particles that need drifting

Here is an algorithmic speed-up. The plan is to drift only the cells that contain an active particles and the cells that have at least one neighbour with an active particle. 

 - If this condition is not met then `runner_do_drift()` just returns without performing any operation. 

 - If the condition is met, `runner_do_drift()` moves all particles (as before) from the last point in time where a drift was performed. 

We record for each cell the last time a drift was done such that we now by how much to drift things when needed.

Two exceptions to this rule: before reconstructing and before duping a snapshot,  we drift all particles as we need correct position information at these two stages.

Note that I have made this an engine policy to ease the testing. Drifting all particles can be restored by setting the right flag.

@nnrw56  could you check that the function `cell_is_drift_needed()` makes sense and fully does what it says it does ? Also could you let me know whether you also agree with the whole logic and implementation.


See merge request !225
parents 5641fa31 5c4963fc
Branches
Tags
1 merge request!225Only drift the particles that need drifting
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment