Skip to content
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

Merged
merged 51 commits into from
Oct 30, 2024

Conversation

mgjarrett
Copy link
Contributor

@mgjarrett mgjarrett commented Oct 11, 2024

What is the change?

The latticePhysicsInterface and crossSectionGroupManager modules are being updated to enable a new type of 1D cylindrical cross section model. The key features added are:

  • New type of block collection in crossSectionGroupManager, CylindricalComponentsPartHetAverageBlockCollection, which extends the existing CylindricalComponentsAverageBlockCollection with a modified method for calculating the average nuclide temperatures within the representative block.
  • New crossSectionControlSettings:
    1. mergeIntoFuel allows a user to specify components to be merged into the fuel for the cross section model
    2. ductHeterogeneous enables the user to select the partially heterogeneous 1D model (as opposed to fully heterogeneous)
    3. 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 the latticePhysicsInterface.

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

  • The release notes have been updated if necessary.
  • The documentation is still up-to-date in the doc folder.
  • The dependencies are still up-to-date in pyproject.toml.

@mgjarrett mgjarrett self-assigned this Oct 11, 2024
@mgjarrett mgjarrett added the enhancement New feature or request label Oct 11, 2024
@jakehader
Copy link
Member

@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?

@mgjarrett
Copy link
Contributor Author

@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):
1D_CYL_PART_HET_AVG_AA-cyl (1)

Fully heterogeneous:
1D_CYL_AVG_AA-cyl

@mgjarrett
Copy link
Contributor Author

I could maybe expand this gallery example to include the partially heterogeneous option:
https://terrapower.github.io/armi/gallery/analysis/run_hexBlockToRZConversion.html#sphx-glr-gallery-analysis-run-hexblocktorzconversion-py

@mgjarrett mgjarrett marked this pull request as ready for review October 18, 2024 01:40
@john-science john-science changed the title Add the option to create a partially heterogeneous assembly representation for 1D XS model Adding option to create a partially heterogeneous assemblies for 1D XS model Oct 24, 2024
@john-science
Copy link
Member

bump

doc/release/0.4.rst Outdated Show resolved Hide resolved
@john-science john-science merged commit e41ba98 into main Oct 30, 2024
15 checks passed
@john-science john-science deleted the partHet1DXS branch October 30, 2024 21:27
drewj-tp added a commit that referenced this pull request Nov 7, 2024
…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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants