todos

TODOs

List of ToDo's for SignedMCRT.

Additional Features

Finished Features

  • Make CI run tests
  • Add Code Coverage reports
  • Remove spurious implicit nones
  • Make sure all optical properties are the same for a model instance (SDF)
  • [x] Add "Scattering" kernels
    • path length counter method
    • Weight method
  • [x] Add documentation on piecewise
    • Constant
    • 1D
    • 2D
  • [x] Finish new SDF API
    • add all SDFs
    • add adjustment functions (twist, union etc)
    • propagate to subs.f90

Minor Features

  • Add more saved state to photon_origin to save compute time
  • [ ] Finish Circular, focus, and annulus source types
    • Circular
    • Focus
    • Annulus. Partially done via control of Beta parameter.
  • [ ] Add Direction component to rest of Detectors
    • Circle
    • Camera
    • Annulus
  • [ ] Add photon trajectory history tracking
    • Add to each detector separately
    • Fix openMP troubles
    • Fix speed issues

Major Features

  • Make code work on Windows
  • Automate benchmarking so we can catch performance regressions
  • Add voxel geometry
  • Add mesh geometry
  • Improve performance of SDF intersection
  • [ ] Make code serializable so that we can checkpoint simulations
    • Save input toml file
    • photons run
    • [ ] Save output data
      • Detectors
      • Fluence
      • Absorb
      • NScatt
  • Add optics to Camera type
  • [x] Add phase tracking (https://github.com/lewisfish/signedMCRT/pull/2).
    • Add phase screen detector to camera
    • Add refractive index accounting
  • Compress output data (https://github.com/aras-p/float_compr_tester/blob/main/src/compression_helpers.cpp)
  • Add more error handling for spectrums in parse.f90
  • [ ] Add optical property type, to allow for multi-spectral input.
    • [x] base optical property type
      • function defined
      • Tabulated
    • propagate to SDFs
    • propagate to subs.f90
    • Document optical properties
    • Change API to match that of SDFs, i.e easier to use
  • Add MPI + openMP mode (e.g. run openMP on N nodes with minimal communication)

Testing

  • Vec3 class
  • Matrix class
  • Vec4 Class
  • [ ] SDF Class
    • Helpers
    • Modifiers
    • Base
    • Shapes
  • [x] Detector Class
    • Circle
    • Camera
    • Annulus
  • Surfaces
  • Grid
  • Optical Properties
  • [ ] Photon class
    • Uniform
    • Point
    • Pencil
    • Circular
    • Annulus
    • Scattering
    • Isotropic
    • Henyey-Greenstein
    • Importance sampling biased scattering
  • Photon movement code
  • History Stack Class
  • I/O
  • Random Numbers
  • [x] Fresnel reflections
    • Simple reflect
    • Simple refract
    • Complex reflect
    • Complex refract
  • [ ] End to End tests
    • Scattering Test
    • Others
  • [ ] test phase
    • double slit
    • square aperture
    • gaussian beam
    • bessel beam

Bugs

  • [ ] Fix CI so that build on Macos run, and builds using Intel run.
    • Macos
    • Intel
  • [ ] Can't operate trackHistory in parallel
    • Make each thread write to tmp file and finish method collate results
  • Added default array option to get_vector in parse.f90