Implement Virtual Lattice Method for Efficient Simulation of Dispersed Fuels #3516
+859
−17
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR introduces a "virtual lattice" method, an acceleration technique designed to improve the performance and reduce the memory footprint of MC simulations for systems containing a large number of randomly dispersed particles.
Background
Simulating explicit, randomly distributed particles is computationally prohibitive due to the geometric complexity. Locating a neutron among hundreds of thousands of spheres is a major performance bottleneck.
The existing
create_triso_lattice
function implements a "physical lattice" approach. While this provides acceleration, it has several drawbacks:Implementation
The virtual lattice method decouples the acceleration structure from the actual CSG model. Instead of physically dividing the geometry, it works as follows:
This approach retains the acceleration benefits of a lattice structure while avoiding the overhead of a physical one.
As demonstrated in the associated paper, the virtual lattice method provides substantial advantages over the physical lattice method.
Usage
The feature is exposed to the user via a simple boolean flag in the Python API. To use the new method, a user simply sets
virtual=True
:This implementation is based on the methodology and results presented in the following paper. For a detailed theoretical background, performance analysis, and validation, please refer to:
Liang, J., Li, R., & Liu, Z. (2024). Virtual lattice method for efficient Monte Carlo transport simulation of dispersion nuclear fuels. Computer Physics Communications, 295, 108985. [https://doi.org/10.1016/j.cpc.2023.108985]
Checklist