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. Example Problems
- 13.1. Common Input Structure
- 13.2. Overview
- 13.3. Common Building Blocks
- 13.4. Example 1: Source-Driven Steady-State Problem
- 13.5. Example 2: Multi-Material Fixed-Source Problem
- 13.6. Example 3: Boundary-Driven Problem
- 13.7. Example 4: Time-Dependent Source Problem
- 13.8. Example 5: Explicit Python Time Loop
- 13.9. Example 6: Power-Iteration k-Eigenvalue Problem
- 13.10. Example 7: Nonlinear k-Eigenvalue Problem
- 13.11. Example 8: Curvilinear Problem
- 13.12. Example 9: Updating a Problem In Place
- 13.13. Example 10: Field-Function Output
- 13.14. Example 11: Balance and Leakage Checks
- 13.15. Example 12: Reusing Flux Data
- 13.16. Example 13: Writing and Reading Restart Dumps
- 13.17. Choosing a Template
- 14. Post Processors
- 14.1. Overview
- 14.2. Updating Existing Field Functions
- 14.3. Scalar Flux Field Functions
- 14.4. Derived Field Functions
- 14.5. Angular Flux Field Functions
- 14.6. Exporting Field Functions
- 14.7. Field-Function Interpolation
- 14.8. Other Useful Post-Processing Paths
- 14.9. Transient Workflows
- 14.10. Practical Guidance
- 15. Visualization
- 16. Running Problems
- 17. Iterative Best Practices
- 17.1. Overview
- 17.2. Core Rules
- 17.3. Upscatter Across Groupsets Must Be Converged
- 17.4. Single Groupset First, Then Split Deliberately
- 17.5. Choose the Inner Method Pragmatically
- 17.6. Use DSA When the Physics Suggests It
- 17.7. Watch Maximum Iteration Counts
- 17.8. Be Careful with Nested Solver Expectations
- 17.9. Transient Best Practices
- 17.10. Eigenvalue Best Practices
- 17.11. What to Check First When Convergence Looks Bad
- 17.12. Recommended Starting Habits
- 18. Troubleshooting
- 18.1. Start with the simplest question
- 18.2. If the code fails immediately
- 18.3. If the solution does not converge
- 18.4. If the physics looks wrong
- 18.5. If field functions are confusing
- 18.6. If parallel behavior looks odd
- 18.7. If imported cross sections behave unexpectedly
- 18.8. General debugging workflow
- 18.9. When to look elsewhere in the manual
- 19. FAQ
- 19.1. Why is my problem split into a problem object and a solver object?
- 19.2. Should I start with multiple groupsets?
- 19.3. Why is my field function not updating?
- 19.4. How do I get normalized power or XS-weighted outputs?
- 19.5. When should I use
Execute()and when should I useAdvance()? - 19.6. What quadrature order should I use?
- 19.7. Is single-angle aggregation always necessary when using unstructured meshes?
- 19.8. What is the safest default sweep type?
- 19.9. Do I need to export field functions during every run?