OpenSn User Guide (Draft)
- 1. Overview
- 2. Installation
- 3. OpenSn Basics
- 4. Geometry and Mesh
- 5. Materials and Cross-Section Data
- 5.1. Overview
- 5.2. Materials, Block IDs, and
xs_map - 5.3. Creating a Simple One-Group Cross Section
- 5.4. Inspecting a
MultiGroupXSObject - 5.5. Loading OpenSn Cross-Section Files
- 5.6. Loading OpenMC MGXS Files
- 5.7. Custom Cross Sections
- 5.8. Combining Cross Sections
- 5.9. Scaling Cross Sections
- 5.10. Choosing Between OpenSn and OpenMC Inputs
- 5.11. Practical Example
- 5.12. Cautions and Best Practices
- 6. Angular Quadratures
- 7. Product Quadratures
- 8. Groupsets
- 9. Iterative Methods
- 10. Boundary Conditions and Sources
- 11. Discrete-Ordinates Problems
- 11.1. Overview
- 11.2. Constructor Summary
- 11.3. Constructor Inputs
- 11.4. Shared LBS Interface
- 11.5. Problem Options
- 11.6.
sweep_type - 11.7. Problem Modes
- 11.8. Field-Function Interface
- 11.9. Angular-Flux Access
- 11.10. Balance and Leakage
- 11.11. Writing and Reading Transport State
- 11.12. Updating the Problem In Place
- 11.13. DiscreteOrdinatesCurvilinearProblem
- 11.14. Typical Construction Patterns
- 11.15. Practical Guidance
- 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
- 23.1. Common Input Structure
- 23.2. Overview
- 23.3. Common Building Blocks
- 23.4. Example 1: Source-Driven Steady-State Problem
- 23.5. Example 2: Multi-Material Fixed-Source Problem
- 23.6. Example 3: Boundary-Driven Problem
- 23.7. Example 4: Time-Dependent Source Problem
- 23.8. Example 5: Explicit Python Time Loop
- 23.9. Example 6: Power-Iteration k-Eigenvalue Problem
- 23.10. Example 7: Nonlinear k-Eigenvalue Problem
- 23.11. Example 8: Curvilinear Problem
- 23.12. Example 9: Updating a Problem In Place
- 23.13. Example 10: Field-Function Output
- 23.14. Example 11: Balance and Leakage Checks
- 23.15. Example 12: Reusing Flux Data
- 23.16. Example 13: Writing and Reading Restart Dumps
- 23.17. Choosing a Template
- 24. Post Processors
- 24.1. Overview
- 24.2. Updating Existing Field Functions
- 24.3. Scalar Flux Field Functions
- 24.4. Derived Field Functions
- 24.5. Angular Flux Field Functions
- 24.6. Exporting Field Functions
- 24.7. Field-Function Interpolation
- 24.8. Volume Postprocessor
- 24.9. Other Useful Post-Processing Paths
- 24.10. Transient Workflows
- 24.11. Practical Guidance
- 25. Visualization
- 26. Running Problems
- 27. Iterative Best Practices
- 27.1. Overview
- 27.2. Core Rules
- 27.3. Upscatter Across Groupsets Must Be Converged
- 27.4. Single Groupset First, Then Split Deliberately
- 27.5. Choose the Inner Method Pragmatically
- 27.6. Use DSA When the Physics Suggests It
- 27.7. Watch Maximum Iteration Counts
- 27.8. Be Careful with Nested Solver Expectations
- 27.9. Transient Best Practices
- 27.10. Eigenvalue Best Practices
- 27.11. What to Check First When Convergence Looks Bad
- 27.12. Recommended Starting Habits
- 28. Troubleshooting
- 28.1. Start with the simplest question
- 28.2. If the code fails immediately
- 28.3. If the solution does not converge
- 28.4. If the physics looks wrong
- 28.5. If field functions are confusing
- 28.6. If parallel behavior looks odd
- 28.7. If imported cross sections behave unexpectedly
- 28.8. General debugging workflow
- 28.9. When to look elsewhere in the manual
- 29. FAQ
- 29.1. Why is my problem split into a problem object and a solver object?
- 29.2. Should I start with multiple groupsets?
- 29.3. Why is my field function not updating?
- 29.4. How do I get normalized power or XS-weighted outputs?
- 29.5. When should I use
Execute()and when should I useAdvance()? - 29.6. What quadrature order should I use?
- 29.7. Is single-angle aggregation always necessary when using unstructured meshes?
- 29.8. What is the safest default sweep type?
- 29.9. Do I need to export field functions during every run?