Skip to content

Add K-HPMR Thermomechanics Model - #831

Open
soonklee wants to merge 10 commits into
idaholab:develfrom
soonklee:k_hpmr_thermomechanics
Open

Add K-HPMR Thermomechanics Model#831
soonklee wants to merge 10 commits into
idaholab:develfrom
soonklee:k_hpmr_thermomechanics

Conversation

@soonklee

Copy link
Copy Markdown
Collaborator

No description provided.

@soonklee

Copy link
Copy Markdown
Collaborator Author

ref #830

@GiudGiud GiudGiud left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is the technical report out for this model? I don't see any new reference.

The approach for mechanics seems similar to Kendrick's thesis at MIT, you might want to cite it there

It would be nice to point to mesh convergence studies in that report too.

Have we done homogenized thermo-mechanics at the core scale before @gambka ? Is it an established methodology?

Comment thread apps/bison
Comment thread doc/content/media/htgr/open-xe100/power_comparison.png Outdated
Comment thread doc/content/media/mrad/K-HPMR_SS_Disp.png
Comment on lines +69 to +73
[null]
type = NullKernel
variable = temp
block = ${hp_blocks}
[]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
[null]
type = NullKernel
variable = temp
block = ${hp_blocks}
[]

you don't need to do that, just block restrict the variable

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

block restriction made on variable

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I looked into removing null block, but wanted to explain why I eneded up keeping it rather than block-restricting temp from hp_blocks. temp on hp_blocks wasn't meant to be physically meaningful as Sockeye owns the heat pipe thermal-fluid physics, and coupling occurs through hp_temp_aux at heat_pipe_ht_surf on the solid side. The reason it needs to be included is that hp_block still needs to be part of the solid mechanics mesh, as heat pipes have to deform coherently with the rest of the core geometry. The mesh boundary/sideset definitions of top, bottom, side_mirror are whole-geometry constructs spanning the full model including hp_blocks. If temp doesn't cover hp_blocks, every BCs and postprocessor referencing those shared sidesets breaks with a "variable not defined on this boundary" error.

I did consider the alternative ways, but those required surgically touching every BCs and postprocessor referencing those boundaries, with more places for a future edit to silently reintroduce the same failure. While NullKernel isn't ideal for a genuine nonlinear variable, since temp is a single field shared across both non_hp_blocks and hp_blocks (bookkeeping only), it can't be split into two variable types within a system. Given that constraint, this seemed like the right tool for the job. Rational for using NullKernel is specified within the input.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excluding selected blocks from a sideset takes a single ParsedGenerateSideset with an "exclude_subdomains" argument

The mesh boundary/sideset definitions of top, bottom, side_mirror are whole-geometry constructs spanning the full model including hp_blocks. If temp doesn't cover hp_blocks, every BCs and postprocessor referencing those shared sidesets breaks with a "variable not defined on this boundary" error.

this is exactly the argument for adding specific boundaries for temperature. you're currently applying boundary conditions on sidesets facing elements where only a nullkernel exists. The effect of that is unknown.

Comment thread doc/content/microreactors/mrad/mrad_k_hpmr_thermomechanics_model.md Outdated
Comment thread microreactors/mrad/load_following_K_SM/K-HPMR_SOCKEYE_tr.i
Comment thread microreactors/mrad/load_following_K_SM/K-HPMR_SOCKEYE_tr.i Outdated
Comment thread microreactors/mrad/load_following_K_SM/K-HPMR_SOCKEYE_tr.i Outdated
Comment thread microreactors/mrad/load_following_K_SM/K-HPMR_GRIFFIN_tr.i
Comment thread microreactors/mrad/load_following_K_SM/K-HPMR_GRIFFIN_tr.i Outdated
@soonklee
soonklee force-pushed the k_hpmr_thermomechanics branch from 56b0ffd to bb62443 Compare June 30, 2026 16:31
@soonklee
soonklee force-pushed the k_hpmr_thermomechanics branch from 7912db0 to 946b94c Compare July 2, 2026 00:47
@gambka

gambka commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

is the technical report out for this model? I don't see any new reference.

The approach for mechanics seems similar to Kendrick's thesis at MIT, you might want to cite it there

It would be nice to point to mesh convergence studies in that report too.

Have we done homogenized thermo-mechanics at the core scale before @gambka ? Is it an established methodology?

We've used homogenization techniques for thermal solutions for other applications. I'm not aware of full core scale thermo-mechanics applications, but I'd have to read up on the approach used here. There are established homogenization methods. Applications of these techniques have been mostly applied to upscaling of lower-length scale models and their information into engineering scale studies. An example is provided here: 10.1016/j.commatsci.2014.12.039

@soonklee soonklee left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the thorough review @GiudGiud. Comments are addressed below.

Changes include:

  • Figures resized to <500kb as requested
  • Mesh file properly tracked with git lfs, including cleaning the raw binary out of early commit history
  • Markdowns revised as requested
  • Input files revised as requested, plus a couple of minor clarifying comments added

The model is updated and ready for further review.
Note that this branch was rebased to fix the lfs history.

Comment thread doc/content/media/mrad/K-HPMR_SS_Disp.png
Comment thread doc/content/microreactors/mrad/mrad_k_hpmr_thermomechanics_model.md Outdated
Comment thread doc/content/microreactors/mrad/mrad_k_hpmr_thermomechanics_model.md Outdated
Comment thread doc/content/microreactors/mrad/mrad_k_hpmr_thermomechanics_results.md Outdated
Comment thread doc/content/microreactors/mrad/mrad_k_hpmr_thermomechanics_results.md Outdated
Comment thread microreactors/mrad/load_following_K_SM/K-HPMR_BISON_tr.i Outdated
Comment thread microreactors/mrad/load_following_K_SM/K-HPMR_BISON_tr.i Outdated
Comment thread microreactors/mrad/load_following_K_SM/K-HPMR_SOCKEYE_tr.i Outdated
Comment thread microreactors/mrad/load_following_K_SM/K-HPMR_SOCKEYE_tr.i Outdated
Comment thread doc/content/microreactors/mrad/mrad_k_hpmr_thermomechanics_model.md Outdated
Comment thread doc/content/microreactors/mrad/mrad_k_hpmr_thermomechanics_model.md Outdated
Comment thread doc/content/microreactors/mrad/mrad_k_hpmr_thermomechanics_model.md Outdated
Comment thread doc/content/microreactors/mrad/mrad_k_hpmr_thermomechanics_model.md Outdated
Comment thread doc/content/microreactors/mrad/mrad_k_hpmr_thermomechanics_model.md Outdated
Comment thread microreactors/mrad/load_following_K_SM/K-HPMR_BISON_tr.i Outdated
Comment thread doc/content/microreactors/mrad/mrad_k_hpmr_thermomechanics_model.md Outdated
Comment thread microreactors/mrad/steady_K_SM/K-HPMR_SOCKEYE.i Outdated
Comment thread microreactors/mrad/steady_K_SM/K-HPMR_GRIFFIN.i Outdated
soonklee and others added 4 commits July 6, 2026 15:12
…el.md

Co-authored-by: Guillaume Giudicelli <guillaume.giudicelli@gmail.com>
…el.md

Co-authored-by: Guillaume Giudicelli <guillaume.giudicelli@gmail.com>
…el.md

Co-authored-by: Guillaume Giudicelli <guillaume.giudicelli@gmail.com>

@soonklee soonklee left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor revisions made to inputs.

Comment thread microreactors/mrad/load_following_K_SM/K-HPMR_GRIFFIN_tr.i
Comment thread microreactors/mrad/load_following_K_SM/K-HPMR_SOCKEYE_tr.i Outdated
Comment thread microreactors/mrad/load_following_K_SM/K-HPMR_SOCKEYE_tr.i Outdated
@soonklee
soonklee requested a review from GiudGiud July 15, 2026 17:25
@GiudGiud

Copy link
Copy Markdown
Collaborator

Needs testing. If you're not adding it I'll do it when I have time

@soonklee

Copy link
Copy Markdown
Collaborator Author

Needs testing. If you're not adding it I'll do it when I have time

I haven't written a tests spec before, but I'll get one set up and push it to PR soon.

@soonklee

Copy link
Copy Markdown
Collaborator Author

I added the initial regression test structure following the existing examples. I would appreciate feedback on whether the current test settings are appropriate.

Comment thread microreactors/mrad/mesh/tests
Comment thread microreactors/mrad/steady_K_SM/tests Outdated
Comment thread microreactors/mrad/steady_K_SM/tests
@soonklee

Copy link
Copy Markdown
Collaborator Author

Hi @GiudGiud,
Please see following updates for tests/hpc_tests.
Latest push includes:

  • Fix and regenerate hp_fine mesh input and gold to correctly designate outer_reflector block for bison
  • Document NullKernel rationale for temp on hp_blocks (Sockeye owns heat pipe physics)
  • Regenerate steady_K_SM and load_following_K_SM gold CSVs
  • Add ss symlink for load_following_K_SM, following the existing Na convention
  • List standalone tests for Griffin and Sockeye on mrad/steady_K_SM/tests and for Bison on mrad/hpc_tests due to fine mesh
  • Confirmed steady/load_following coupled_tests on mrad/hpc_tests with loosen tolerance

@soonklee soonklee left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pushed gold and test matrix. Ready for re-review.

@soonklee
soonklee requested a review from GiudGiud August 13, 2026 15:08
@GiudGiud GiudGiud added the new_model Adding a new model to the VTB label Aug 13, 2026

@GiudGiud GiudGiud left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

testing looks good. I'll turn it on right now.

I ll send you an invite to be part of the VTB organization on github so the tests run automatically.
The Direwolf HPC recipe is the one we ll need to watch here

@@ -0,0 +1,705 @@
################################################################################
## NEAMS Micro-Reactor Application Driver ##
## Heat Pipe Microreactor Steady State ##

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Heat Pipe Microreactor Steady State ##
## Heat Pipe Microreactor load follow ##

Comment on lines +69 to +73
[null]
type = NullKernel
variable = temp
block = ${hp_blocks}
[]

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excluding selected blocks from a sideset takes a single ParsedGenerateSideset with an "exclude_subdomains" argument

The mesh boundary/sideset definitions of top, bottom, side_mirror are whole-geometry constructs spanning the full model including hp_blocks. If temp doesn't cover hp_blocks, every BCs and postprocessor referencing those shared sidesets breaks with a "variable not defined on this boundary" error.

this is exactly the argument for adding specific boundaries for temperature. you're currently applying boundary conditions on sidesets facing elements where only a nullkernel exists. The effect of that is unknown.

@@ -0,0 +1,318 @@
################################################################################
## NEAMS Micro-Reactor Application Driver ##
## Heat Pipe Microreactor Steady State ##

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Heat Pipe Microreactor Steady State ##
## Heat Pipe Microreactor Load following transient ##

## Heat Pipe Microreactor Steady State ##
## BISON Child Application input file ##
## Thermomechanical model (Heat conduction, Thermal Expansion, Thermal Stress)##
## FY26 Summer Update for Solid Mechanics Implementation ##

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## FY26 Summer Update for Solid Mechanics Implementation ##
## of partially-homogenized geometry ##
## FY26 Summer Update for Solid Mechanics Implementation ##

Comment on lines +3 to +4
## Heat Pipe Microreactor Steady State ##
## Sockeye Grandchild Application input file ##

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
## Heat Pipe Microreactor Steady State ##
## Sockeye Grandchild Application input file ##
## Heat Pipe Microreactor Load following transient ##
## Sockeye Grandchild Application input file ##

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new_model Adding a new model to the VTB

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants