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

Improvements to setBlockMesh #1678

Open
albeanth opened this issue Apr 2, 2024 · 0 comments
Open

Improvements to setBlockMesh #1678

albeanth opened this issue Apr 2, 2024 · 0 comments
Labels
architecture Issues related to big picture system architecture enhancement New feature or request

Comments

@albeanth
Copy link
Member

albeanth commented Apr 2, 2024

#1665 brought up an interesting discussion between @mgjarrett and I.

setBlockMesh is intended to be used to force/snap the axial mesh of an assembly to some prescribed axial mesh.

The behavior of setBlockMesh is controlled through the parameter conserveMassFlag which either

  1. "auto" -- conserves all of the components below the fuel block(s) as well only the fuel components within fuel blocks.
    • the intent was to support irradiation-based axial expansion of fuel
    • but is also odd because why care about what's below the fuel since irradiation-based axial expansion is only relevant for fuel
    • it feels like this was written for a former modeling paradigm that we've progressed beyond (which isn't a bad thing and won't be the last!)
  2. "True" -- conserves all components
    • is not used within ARMI or any major downstream applications that I can see
  3. "False" -- conserves nothing
    • is used in ARMI in a couple spots via default. it probably shouldn't be...

The two use cases that @mgjarrett and I discussed providing coverage for were for axial thermal expansion and irradiation-based expansion.

Axial Thermal Expansion

All solid components should have their masses conserved.

  • for each assembly, all solid components within each block would be set to the new block height
  • their number densities would get scaled by old_block_height/new_block_height

Irradiation-Based Axial Expansion

Focus be given to the conservation of mass for the fuel components only.

  • Only fuel components will have their number densities changed. Results in a change in mass for all non-fuel solid components (e.g., clad and control mass increase if fuel grows)

Proposal

Given the above, I would propose that we refactor setBlockMesh for the above two use cases and control the behavior of which through a new parameter. E.g., something like

def setBlockMesh(self, newMesh: List[float], scenarioDriver: str):
    ```
    ...
    Parameters
    -------------
    newMesh
        The new mesh to snap the assembly to. 
    scenarioDriver
        Determine if newMesh is driven by thermal expansion or irradiation based expansion
    ```

@mgjarrett @keckler @onufer @jakehader thoughts?

@albeanth albeanth added enhancement New feature or request architecture Issues related to big picture system architecture labels Apr 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
architecture Issues related to big picture system architecture enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant