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. Loading CEPXS-BFP Files
- 5.8. Custom Cross Sections
- 5.9. Combining Cross Sections
- 5.10. Scaling Cross Sections
- 5.11. Choosing Between OpenSn and OpenMC Inputs
- 5.12. Practical Example
- 5.13. Cautions and Best Practices
- 6. Angular Quadratures
- 7. Groupsets
- 8. Iterative Methods
- 9. CMFD Acceleration
- 10. Boundary Conditions and Sources
- 10.1. Overview
- 10.2. Boundary Conditions
- 10.3. Point Sources
- 10.4. Volumetric Sources
- 10.5. Attaching Sources at Problem Construction
- 10.6. Replacing Sources After Construction
- 10.7. Transient Source and Boundary Behavior
- 10.8. Boundary Names and Mesh Labels
- 10.9. Normalization and Units
- 10.10. Best Practices
- 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. Uncollided and First-Collision Transport
- 11.9. Field-Function Interface
- 11.10. Angular-Flux Access
- 11.11. Balance and Leakage
- 11.12. Writing and Reading Transport State
- 11.13. Updating the Problem In Place
- 11.14. DiscreteOrdinatesCurvilinearProblem
- 11.15. Typical Construction Patterns
- 11.16. Practical Guidance
- 12. CSDA Charged-Particle Transport
- 13. preCICE Multiphysics Coupling
- 13.1. Building
- 13.2. Overview
- 13.3. Step 1: Solve the transport problem
- 13.4. Step 2: Create the energy-deposition field
- 13.5. Step 3: Convert the field to watts
- 13.6. Step 4: Describe the geometry
- 13.7. Step 5: Remove finite-element undershoots (optional)
- 13.8. Step 6: Write the preCICE configuration
- 13.9. Step 7: Set up the receiving solver
- 13.10. Step 8: Run and verify
- 13.11. Complete examples
- 13.12. Mapping behavior
- 13.13. Troubleshooting
- 13.14. API reference
- 14. Solvers
- 15. Overview
- 16. Validation and lifecycle
- 17. Base Classes
- 18. LBS Problem
- 19. Discrete Ordinates Problem
- 20. Steady-State Source Solver
- 21. Transient Solver
- 22. Power Iteration k-Eigen Solver
- 23. Nonlinear k-Eigen Solver
- 24. Initialization Order and Common Patterns
- 25. Field Functions and Solver Output
- 26. Example Problems
- 26.1. Common Input Structure
- 26.2. Overview
- 26.3. Common Building Blocks
- 26.4. Example 1: Source-Driven Steady-State Problem
- 26.5. Example 2: Multi-Material Fixed-Source Problem
- 26.6. Example 3: Boundary-Driven Problem
- 26.7. Example 4: Time-Dependent Source Problem
- 26.8. Example 5: Explicit Python Time Loop
- 26.9. Example 6: Power-Iteration k-Eigenvalue Problem
- 26.10. Example 7: Nonlinear k-Eigenvalue Problem
- 26.11. Example 8: Curvilinear Problem
- 26.12. Example 9: Updating a Problem In Place
- 26.13. Example 10: Field-Function Output
- 26.14. Example 11: Balance and Leakage Checks
- 26.15. Example 12: Reusing Flux Data
- 26.16. Example 13: Writing and Reading Restart Dumps
- 26.17. Example 14: Starting a Transient from a Steady-State Restart
- 26.18. Choosing a Template
- 27. Post Processors
- 27.1. Overview
- 27.2. Updating Existing Field Functions
- 27.3. Scalar Flux Field Functions
- 27.4. Derived Field Functions
- 27.5. Angular Flux Field Functions
- 27.6. Exporting Field Functions
- 27.7. Field-Function Interpolation
- 27.8. Volume Postprocessor
- 27.9. Cross-Section Sensitivity Postprocessor
- 27.10. Other Useful Post-Processing Paths
- 27.11. Transient Workflows
- 27.12. Practical Guidance
- 28. Visualization
- 29. Running Problems
- 30. Iterative Best Practices
- 30.1. Overview
- 30.2. Core Rules
- 30.3. Upscatter Across Groupsets Must Be Converged
- 30.4. Single Groupset First, Then Split Deliberately
- 30.5. Choose the Inner Method Pragmatically
- 30.6. Use DSA When the Physics Suggests It
- 30.7. Watch Maximum Iteration Counts
- 30.8. Be Careful with Nested Solver Expectations
- 30.9. Transient Best Practices
- 30.10. Eigenvalue Best Practices
- 30.11. What to Check First When Convergence Looks Bad
- 30.12. Recommended Starting Habits
- 31. Troubleshooting
- 31.1. Start with the simplest question
- 31.2. If the code fails immediately
- 31.3. If the solution does not converge
- 31.4. If the physics looks wrong
- 31.5. If field functions are confusing
- 31.6. If parallel behavior looks odd
- 31.7. If imported cross sections behave unexpectedly
- 31.8. General debugging workflow
- 31.9. When to look elsewhere in the manual
- 32. FAQ
- 32.1. Why is my problem split into a problem object and a solver object?
- 32.2. Should I start with multiple groupsets?
- 32.3. Why is my field function not updating?
- 32.4. How do I get normalized power or XS-weighted outputs?
- 32.5. When should I use
Execute()and when should I useAdvance()? - 32.6. What quadrature order should I use?
- 32.7. Is single-angle aggregation always necessary when using unstructured meshes?
- 32.8. What is the safest default sweep type?
- 32.9. Do I need to export field functions during every run?