Currently, a basic tracking procedure is implemented for 2-D geometries bounded by a Cartiesian box. The jump to a 3-D variant should be straightforward.
The current approach starts by selecting a set of boundary points for a given angle (azimuthal for 2-D; should be full angle in 3-D) on the corresponding incident sides. Then rays are cast, and the exit points are found from the resulting intersections (sort of a boot-strapped approach).
This approach is suitable for standard models. However, tracking for different bounding surfaces should be supported in some way. Specifically, I imagine tracking on arbitrary triangular cells (in 2-D) and tetrahedral cells (in 3-D) for exploring high-order discretization schemes.
So, the preliminary tasks are:
[ ] implement track generation (i.e., entries and exits) for 3-D based on a prescribed distribution of points on a surface. In 2-D, the points can be distributed according to any 1-D quadrature rule. In 3-D, one can use a product of 1-D quadratures. Alternatively, (quasi)Monte Carlo can be used to generate points.
[ ] implement tracking for 3-D. This should be automatic given the code setup, but verification tests must be implemented to ensure things extend to 3-D as expected.
[ ] implement a visualization tool box. The tracks and segments can be plotted using matplotlib or other tools. Alternatively, leverage some existing format (e.g., silo) that stores things like "line segments."
[ ] implement threading for the tracking based on OpenMP. This should be straightforward as tracks are independent.
Currently, a basic tracking procedure is implemented for 2-D geometries bounded by a Cartiesian box. The jump to a 3-D variant should be straightforward.
The current approach starts by selecting a set of boundary points for a given angle (azimuthal for 2-D; should be full angle in 3-D) on the corresponding incident sides. Then rays are cast, and the exit points are found from the resulting intersections (sort of a boot-strapped approach).
This approach is suitable for standard models. However, tracking for different bounding surfaces should be supported in some way. Specifically, I imagine tracking on arbitrary triangular cells (in 2-D) and tetrahedral cells (in 3-D) for exploring high-order discretization schemes.
So, the preliminary tasks are: