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. CMFD Acceleration
- 11. Boundary Conditions and Sources
- 12. Discrete-Ordinates Problems
- 12.1. Overview
- 12.2. Constructor Summary
- 12.3. Constructor Inputs
- 12.4. Shared LBS Interface
- 12.5. Problem Options
- 12.6.
sweep_type - 12.7. Problem Modes
- 12.8. Field-Function Interface
- 12.9. Angular-Flux Access
- 12.10. Balance and Leakage
- 12.11. Writing and Reading Transport State
- 12.12. Updating the Problem In Place
- 12.13. DiscreteOrdinatesCurvilinearProblem
- 12.14. Typical Construction Patterns
- 12.15. Practical Guidance
- 13. Solvers
- 14. Overview
- 15. Base Classes
- 16. LBS Problem
- 17. Discrete Ordinates Problem
- 18. Steady-State Source Solver
- 19. Transient Solver
- 20. Power Iteration k-Eigen Solver
- 21. Nonlinear k-Eigen Solver
- 22. Initialization Order and Common Patterns
- 23. Field Functions and Solver Output
- 24. Example Problems
- 24.1. Common Input Structure
- 24.2. Overview
- 24.3. Common Building Blocks
- 24.4. Example 1: Source-Driven Steady-State Problem
- 24.5. Example 2: Multi-Material Fixed-Source Problem
- 24.6. Example 3: Boundary-Driven Problem
- 24.7. Example 4: Time-Dependent Source Problem
- 24.8. Example 5: Explicit Python Time Loop
- 24.9. Example 6: Power-Iteration k-Eigenvalue Problem
- 24.10. Example 7: Nonlinear k-Eigenvalue Problem
- 24.11. Example 8: Curvilinear Problem
- 24.12. Example 9: Updating a Problem In Place
- 24.13. Example 10: Field-Function Output
- 24.14. Example 11: Balance and Leakage Checks
- 24.15. Example 12: Reusing Flux Data
- 24.16. Example 13: Writing and Reading Restart Dumps
- 24.17. Example 14: Starting a Transient from a Steady-State Restart
- 24.18. Choosing a Template
- 25. Post Processors
- 25.1. Overview
- 25.2. Updating Existing Field Functions
- 25.3. Scalar Flux Field Functions
- 25.4. Derived Field Functions
- 25.5. Angular Flux Field Functions
- 25.6. Exporting Field Functions
- 25.7. Field-Function Interpolation
- 25.8. Volume Postprocessor
- 25.9. Other Useful Post-Processing Paths
- 25.10. Transient Workflows
- 25.11. Practical Guidance
- 26. Visualization
- 27. Running Problems
- 28. Iterative Best Practices
- 28.1. Overview
- 28.2. Core Rules
- 28.3. Upscatter Across Groupsets Must Be Converged
- 28.4. Single Groupset First, Then Split Deliberately
- 28.5. Choose the Inner Method Pragmatically
- 28.6. Use DSA When the Physics Suggests It
- 28.7. Watch Maximum Iteration Counts
- 28.8. Be Careful with Nested Solver Expectations
- 28.9. Transient Best Practices
- 28.10. Eigenvalue Best Practices
- 28.11. What to Check First When Convergence Looks Bad
- 28.12. Recommended Starting Habits
- 29. Troubleshooting
- 29.1. Start with the simplest question
- 29.2. If the code fails immediately
- 29.3. If the solution does not converge
- 29.4. If the physics looks wrong
- 29.5. If field functions are confusing
- 29.6. If parallel behavior looks odd
- 29.7. If imported cross sections behave unexpectedly
- 29.8. General debugging workflow
- 29.9. When to look elsewhere in the manual
- 30. FAQ
- 30.1. Why is my problem split into a problem object and a solver object?
- 30.2. Should I start with multiple groupsets?
- 30.3. Why is my field function not updating?
- 30.4. How do I get normalized power or XS-weighted outputs?
- 30.5. When should I use
Execute()and when should I useAdvance()? - 30.6. What quadrature order should I use?
- 30.7. Is single-angle aggregation always necessary when using unstructured meshes?
- 30.8. What is the safest default sweep type?
- 30.9. Do I need to export field functions during every run?