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

Accounting for symmetry in volume-integrated parameters #2017

Merged
merged 33 commits into from
Dec 11, 2024

Conversation

bsculac
Copy link
Contributor

@bsculac bsculac commented Nov 21, 2024

What is the change?

The block parameters initialB10ComponentVolume, massHmBOL, and molesHmBOL did not have a location tag that would cause them to be multiplied by the symmetry factor when expanding to full core, so the VOLUME_INTEGRATED tag was added. This should cause these values to be correctly accounted for when assemblies are placed on symmetry boundaries. A survey of other parameters was made, and the VOLUME_INTEGRATED tag was added as needed to cause all block parameters that should change with the volume of the block to have the tag.

The assembly method moveTo is modified to have a check for the symmetry factor of the source and destination locations. The ratio of the symmetry factors is used to adjust the volume integrated parameters in the blocks within the assembly to account for the blocks being split between different sections of the core.

The moveTo method is used for placing the assembly in the core and for movement within the core, so this change should account for all the modifications needed to correctly represent block parameters that change based on the volume of the block. Note that this does not change values that are calculated on the fly, such as the volume with the getVolume method.

Changes that are made based on discovered knock on effects from this change:

  1. The getParamMax assembly method did not account for the symmetry factor when making comparisons between assemblies. It would therefore return incorrect values for parameters which were stored in a way that accounted for the symmetry factor. See https://github.com/terrapower/armi/pull/2017/files#diff-447b13bcb80d46b6c7901b9dae9ec8bcdf6f4f5f176a61b7beae558fd368dba2R216-R224

Why is the change being made?

Incorrect values were calculated for initialB10ComponentVolume and downstream values dependent on it for assemblies located in the center of 1/3rd symmetric cores.


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.

@bsculac bsculac requested a review from onufer November 21, 2024 19:02
@bsculac bsculac marked this pull request as ready for review November 21, 2024 19:49
@bsculac bsculac marked this pull request as draft November 21, 2024 19:59
@bsculac
Copy link
Contributor Author

bsculac commented Nov 21, 2024

Working on running a test case to demonstrate that the parameters are correctly accounted for in assemblies that are split between symmetric portions of the core.

The core.add method uses assembly.moveTo to place assemblies in the
reactor. Since moveTo now accounts for changes in symmetry factor,
having an additional adjustment in the core.add method is incorrect and
would double account for any change in symmetry factor.
@john-science
Copy link
Member

@bsculac Are you hoping this PR will make it into the (imminent) ARMI 0.5.0 release?

@john-science john-science self-requested a review November 25, 2024 18:10
@bsculac
Copy link
Contributor Author

bsculac commented Nov 25, 2024

@bsculac Are you hoping this PR will make it into the (imminent) ARMI 0.5.0 release?

I don't think it needs to hold up the release. I'm not sure I'll have enough time to wrap it up before code freeze, I'm out until after Thanksgiving.

the unit test was comparing the power in a block between two timesteps.
the block was being moved from a non-central location to the central
location, where only 1/3rd of the assembly should be in the reactor. The
assert in the test was incorrect in that it was saying the power in the
assembly should be the same before and after the move. This is wrong for
a few reasons, first being that the power is no longer valid after the
move. But aside from that, the power should be 1/3rd what it was because
the assembly is only 1/3rd in the core. Really it should be zeroed out
but other non-power parameters that are volume calculated should be
reduced by the amount that the assembly actually exists in the reactor.

Additionally, the power in the central assembly in the example was
calculated assuming the full assembly exists in the core. the example
was modified to correctly calculate the power in the central assembly,
which then required FuelHandler._getParamMax to account for the symmetry
factor of the assembly, otherwise the ordering was incorrect and the
shuffling in the example occured in a different order.
@bsculac
Copy link
Contributor Author

bsculac commented Dec 4, 2024

John and I talked about this for a bit. I think we arrived at two conclusions:

  1. The core idea of adjusting some parameters as an assembly is placed to/from a position like the center position in a 1/3rd symmetric core (i.e. somewhere it would be in multiple symmetric sections of the core) is fine. The specific means may need different implementations, e.g. selecting all volume integrated parameters for adjustment may not be ideal. Also, the knock on effects of this change would have to be thoroughly evaluated.

  2. However, the problem this PR is attempting to fix may need a different solution than adjustment of parameters upon an assembly's placement in the core. John was of the opinion that when an assembly is constructed and initially placed in the core it should have no valid parameters that would need adjustment for the symmetry factor, those parameters should be assigned in interactBOL. I don't necessarily disagree, but this is a decision the project needs to make (or reaffirm).

@john-science please correct me if I've misrepresented our discussion, or if you'd like to add anything.

@bsculac bsculac marked this pull request as ready for review December 7, 2024 03:04
Co-authored-by: John Stilley <1831479+john-science@users.noreply.github.com>
@john-science john-science added the feature request Smaller user request label Dec 10, 2024
@john-science john-science merged commit 9945e29 into main Dec 11, 2024
22 checks passed
@john-science john-science deleted the symmetry_parameter_fix branch December 11, 2024 19:12
@john-science john-science changed the title account for symmetry in volume integrated parameters in assemblies on symmetry lines Accounting for symmetry in volume-integrated parameters Dec 11, 2024
drewj-tp added a commit that referenced this pull request Dec 12, 2024
…1915

* origin/main:
  Fixing _getParamMax for Volume-Integrated Assembly Params (#2033)
  Accounting for symmetry in volume-integrated parameters (#2017)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request Smaller user request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants