-
Notifications
You must be signed in to change notification settings - Fork 90
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adding option to create a partially heterogeneous assemblies for 1D XS model #1949
Conversation
@mgjarrett - Do you have some images you could share on what this model looks like when enabled? Is there any part of the user manual / documentation should be amended to describe this in more detail with examples? |
Here are two PNGs generated by ARMI of the converted 1D cylindrical representation of the 2D hexagon. This is for a hexagon with 10 rings of pins (271 total pins in the lattice). Partially Heterogeneous (everything inside the duct is homogenized): |
I could maybe expand this gallery example to include the partially heterogeneous option: |
bump |
…u-rotate-with-pin-dep * zprince/component_flux_up: fix linting release notes Enabling axial expansion with detailed depletion (#1954) Improving error testing (#2004) Addressing reviewer comments for component pin mg fluxes Removing mystery coverage line from tests (#2003) beef up assertions resolve fixme org imports No need to recast strings to strings Finishing up the numProcessors -> nTasks conversion (#2002) Using one-block reactor for component flux test Supporting Python 3.13 (#1996) Removing SmartList & adding coverage (#1992) Update `copyOrWarn` and `getFileSHA1Hash` to account for directories (#1984) Removing broken plot (#1994) Adding unit tests for `CylindricalComponentsDuctHetAverageBlockCollection` (#1991) Allowing creation of partially heterogeneous assemblies for 1D XS model (#1949)
What is the change?
The
latticePhysicsInterface
andcrossSectionGroupManager
modules are being updated to enable a new type of 1D cylindrical cross section model. The key features added are:crossSectionGroupManager
,CylindricalComponentsPartHetAverageBlockCollection
, which extends the existingCylindricalComponentsAverageBlockCollection
with a modified method for calculating the average nuclide temperatures within the representative block.crossSectionControlSettings
:mergeIntoFuel
allows a user to specify components to be merged into the fuel for the cross section modelductHeterogeneous
enables the user to select the partially heterogeneous 1D model (as opposed to fully heterogeneous)traceIsotopeThreshold
allows a user to split low-concentration isotopes out of the 1D cross section model and instead run a 0D model to obtain cross sections for those isotopes.Much of the implementation details related to these new
crossSectionControl
options would need to be implemented in the downstream plugins that extend thelatticePhysicsInterface
.Why is the change being made?
These features are being added to enable downstream lattice physics plugins to have more options and flexibility when it comes to building a 1D cylindrical equivalent model of a 2D hexagonal assembly for cross section generation. Since a fully-heterogeneous 1D cylindrical model can pose a significantly more compute-intensive problem for the lattice physics solver than a simple 0D model, it is helpful to have options for simplifying the 1D model. Combining small/unimportant components into others (
mergeIntoFuel
), homogenizing several regions together (ductHeterogeneous
), and pulling out trace isotopes that don't contribute significantly to reaction rates (traceIsotopeThreshold
) can all help to reduce the complexity of the 1D model.Checklist
doc
folder.pyproject.toml
.