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
Auhtors, “OpenSn: title,” journal, volume, page–page (year).
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. Groupsets
- 8. Iterative Methods
- 9. Boundary Conditions and Sources
- 10. Discrete-Ordinates Problems
- 11. Solvers
- 12. Post Processing
- 13. Visualization
- 14. Running Problems
- 15. Iterative Best Practices
- 16. Troubleshooting
- 17. FAQ
- Theory Manual
- Tutorials
- C++ API
- Python API
- Developer’s Guide
- Appendices
- Gallery