celeritas-project / celeritas

Celeritas is a new Monte Carlo transport code designed to accelerate scientific discovery in high energy physics by improving detector simulation throughput and energy efficiency using GPUs.
https://celeritas-project.github.io/celeritas/
Other
64 stars 35 forks source link

Add volumetric optical physics #1300

Open sethrj opened 4 months ago

sethrj commented 4 months ago

Cross section tables

Split off from https://github.com/celeritas-project/celeritas/issues/886 . I think this could be a good opportunity to explore a new design for building physics tables that can be extended to satisfy https://github.com/celeritas-project/celeritas/issues/907 and https://github.com/celeritas-project/celeritas/issues/253 .

First, I think to keep the Model (or OpticalVolumeProcess) interface simple, we should have a single virtual method that takes or returns a relatively complicated object for the cross section construction. In ORANGE, for constructing surfaces and numerous other data structures from a "Solid" factory object, the model of passing in a Builder class (which has wrappers for the various CollectionBuilder methods) has worked really well.

So perhaps our class would have:

virtual void build(XsBuilder&) const = 0;

and XsBuilder would have:

Then during construction, the OpticalPhysics will:

Models

hhollenb commented 4 months ago

I made a rough draft of an idea I had for splitting out some of the builder functionality:

https://github.com/hhollenb/celeritas/pull/1

I'm not fully happy with it, but there might be something there that could be refactored into something useful.

sethrj commented 4 months ago

Thanks @hhollenb ! There are some good ideas there but I'm not sure how we can make them reusable/general without sacrificing clarity/robustness...

sethrj commented 4 weeks ago

Tagging #1469