Radiation transport example#1647
Conversation
mnabian
left a comment
There was a problem hiding this comment.
LGTM! Left a few minor comments.
…ivate classes/methods
…-example # Conflicts: # CHANGELOG.md
|
Wait, I think the split file might not actually be used here.
Wouldn’t that mean train/val/test can end up reading overlapping files depending on the directory ordering? |
Great catch! Thanks for the attention to detail, fixed in 8c9c3e4. |
|
/blossom-ci |
|
/blossom-ci |
1 similar comment
|
/blossom-ci |
|
/ok to test cbb1ddc |
|
/ok to test cbb1ddc |
@melo-gonzo, there was an error processing your request: See the following link for more information: https://docs.gha-runners.nvidia.com/cpr/e/2/ |
|
/ok to test 37e1413 |
|
/blossom-ci |
2 similar comments
|
/blossom-ci |
|
/blossom-ci |
PhysicsNeMo Pull Request
Description
Radiation Transport Surrogate Model with Transolver
This PR adds a new PhysicsNeMo example under
examples/nuclear_engineering/radiation_transport/that trains a Transolver surrogate for the 2-D linear radiation transport equation on two benchmark problems relevant for nuclear reactor assembly design and inertial confinement fusion — the Lattice and Hohlraum benchmarks from Kusch et al. 2025, with data generated by the KiT-RT simulation code. The example is built end-to-end on PhysicsNeMo's:Meshdatapipes,DataLoader/Compose/Normalizetransforms, theTransolvermodel, theCombinedOptimizer(Muon + AdamW), andphysicsnemo.utils.checkpoint. It supports distributed training, well-defined quantities of interest, a differentiable physics loss, and reusable modules for extending to other archetectures.Why
As with many other scientific and engineering pipelines, running simulations is the bottleneck. This workflow demonstrates how PhysicsNeMo, and models traditionally used in CFD, CAE, and other domains, can be reused for radiation transport. Because the KiT-RT code is "benchmark-style," it is a natural interface for validating scientific ML and surrogate models.
Key Changes
New example tree
Data layout
Each simulation is one
<name>.pmsh/directory (written byphysicsnemo.mesh.Mesh.save) next to a<name>.attrs.jsonsidecar.RTEBaseDataset._loadusesphysicsnemo.mesh.Mesh.loadfor the memmap tensors and readsraw_attrsfrom the sidecar, exposing it as aNonTensorDatametadataentry on the returnedTensorDict. Splits are basename arrays; the reader appends.pmshwhen opening stores.Training
torchrun --nproc_per_node=N src/train.py; single-processworks via plain
python(no DDP-specific code is gated on launchdetection beyond what
DistributedManagerprovides).torch.amp.autocast+GradScaler(fp16) / direct autocast (bf16).train.optimizer.type=muonreturns aCombinedOptimizerwithtorch.optim.Muonfor 2-D weight matricesSequentialLR([LinearLR, CosineAnnealingLR])for warmupcheckpoints/best_model/.Known Limitations
not used as a model input in this example.
Checklist
Dependencies
Review Process
All PRs are reviewed by the PhysicsNeMo team before merging.
Depending on which files are changed, GitHub may automatically assign a maintainer for review.
We are also testing AI-based code review tools (e.g., Greptile), which may add automated comments with a confidence score.
This score reflects the AI’s assessment of merge readiness and is not a qualitative judgment of your work, nor is
it an indication that the PR will be accepted / rejected.
AI-generated feedback should be reviewed critically for usefulness.
You are not required to respond to every AI comment, but they are intended to help both authors and reviewers.
Please react to Greptile comments with 👍 or 👎 to provide feedback on their accuracy.