RustBCA icon indicating copy to clipboard operation
RustBCA copied to clipboard

[feature] Major refactor to enhance code organization, potentially improve performance

Open drobnyjt opened this issue 3 years ago • 0 comments
trafficstars

Is your feature request related to a problem? Please describe. RustBCA has some code consistency issues and organizational problems that should be fixed with a major refactor at some point in the future. Below is a non-complete list of the issues I'm aware of:

  • interactions should be re-implemented as traits - see Issue #132
  • structs should be made private, with fields accessible by method where needed
  • some functions should be made methods; in particular:
  1. choose_collision_partner in bca.rs
  2. surface_refraction and refraction_angle in particle.rs
  3. particle_advance and rotate_particle in particle.rs
  4. boundary_condition_planar and surface_binding_energy in material.rs
  • SoA (Struct of Arrays) should be considered for Particles over AoS - could improve performance significantly
  • Electronic stopping should be broken into component functions so bits and pieces can be unit-tested

Additional context Biggest effect of this refactor will be easing development of alternative ways of running the code, preparing the code to be made a library for binary collisions first with the physics loop and I/O being optional, and making more parts of the code unit-testable.

drobnyjt avatar Feb 23 '22 19:02 drobnyjt