The OpenSn Discrete-Ordinates Code
OpenSn is an open-source, massively parallel, radiation transport code designed to solve the discrete-ordinates Boltzmann transport equation for neutral particles in a deterministic manner. OpenSn tackles a variety of problems, including steady-state and dynamical source-driven scenarios, as well as eigenvalue (criticality) problems.
Written in modern C++, OpenSn features a Python interface, making it versatile and accessible. From a simple laptop to a supercomputer, OpenSn can be compiled and executed across a wide range of computing platforms.
OpenSn aggregates decades of research and development in numerical methods and parallel algorithms applied to radiation transport. The most prominent features of OpenSn include:
A robust spatial finite-element method that is fully compatible with arbitrary polyhedral cells and adaptively refined grids.
Standard angular quadratures, as well as locally refined finite-element angular quadrature rules for the angular variable. Note that uncollided-flux treatment techniques to mitigate ray effects typically found in angular collocation methods will become available at a later date.
The traditional multigroup approximation applied to the energy variable. It is worth noting that multi-particle (e.g., neutron+gamma) problems can be seamlessly handled.
Advanced iterative solution algorithms are employed to efficiently solve the resulting system of equations, including transport-sweep preconditioning with various synthetic accelerators.
Execution of massively parallel simulations on arbitrarily partitioned computational domains, utilizing efficient data aggregation and workflows to maximize performance. The code scales efficiently on a large number of MPI ranks, supporting up to 100,000+ processes.
Recommended publication for citing
David Andrs, Zachary Hardy, Daryl Hawkins, Jim Morel, Dinh Quoc Dang Nguyen, Jean Ragusa, “OpenSn: A Massively Parallel, Open-Source Simulation Environment for Discrete Ordinates Radiation Transport,” Computer Physics Communications, 320, 110001 (2026).
Contents
- Quick Install Guide
- OpenSn User Guide (Draft)
- 1. Overview
- 2. Installation
- 3. OpenSn Basics
- 4. Geometry and Mesh
- 5. Materials and Cross-Section Data
- 6. Angular Quadratures
- 7. Product Quadratures
- 8. Groupsets
- 9. Iterative Methods
- 10. Boundary Conditions and Sources
- 11. Discrete-Ordinates Problems
- 12. Solvers
- 13. Overview
- 14. Base Classes
- 15. LBS Problem
- 16. Discrete Ordinates Problem
- 17. Steady-State Source Solver
- 18. Transient Solver
- 19. Power Iteration k-Eigen Solver
- 20. Nonlinear k-Eigen Solver
- 21. Initialization Order and Common Patterns
- 22. Field Functions and Solver Output
- 23. Example Problems
- 24. Post Processors
- 25. Visualization
- 26. Running Problems
- 27. Iterative Best Practices
- 28. Troubleshooting
- 29. FAQ
- Theory Manual
- Tutorials
- C++ API
- Python API
- Developer’s Guide
- Appendices
- Gallery