Open
Description
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 [feature] re-implement interactions as trait objects #132
- structs should be made private, with fields accessible by method where needed
- some functions should be made methods; in particular:
choose_collision_partner
in bca.rssurface_refraction
andrefraction_angle
in particle.rsparticle_advance
androtate_particle
in particle.rsboundary_condition_planar
andsurface_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.