-
- Downloads
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
Branches
Tags
Showing
- README 2 additions, 2 deletionsREADME
- examples/main.c 10 additions, 2 deletionsexamples/main.c
- src/cell.c 92 additions, 62 deletionssrc/cell.c
- src/cell.h 32 additions, 7 deletionssrc/cell.h
- src/engine.c 26 additions, 6 deletionssrc/engine.c
- src/engine.h 5 additions, 11 deletionssrc/engine.h
- src/runner.c 14 additions, 4 deletionssrc/runner.c
- src/space.c 8 additions, 2 deletionssrc/space.c
Loading
Please register or sign in to comment