Add K-HPMR Thermomechanics Model - #831
Conversation
|
ref #830 |
GiudGiud
left a comment
There was a problem hiding this comment.
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?
| [null] | ||
| type = NullKernel | ||
| variable = temp | ||
| block = ${hp_blocks} | ||
| [] |
There was a problem hiding this comment.
| [null] | |
| type = NullKernel | |
| variable = temp | |
| block = ${hp_blocks} | |
| [] |
you don't need to do that, just block restrict the variable
There was a problem hiding this comment.
block restriction made on variable
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
56b0ffd to
bb62443
Compare
7912db0 to
946b94c
Compare
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
left a comment
There was a problem hiding this comment.
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.
…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
left a comment
There was a problem hiding this comment.
Minor revisions made to inputs.
|
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. |
|
I added the initial regression test structure following the existing examples. I would appreciate feedback on whether the current test settings are appropriate. |
… tests/hpc_tests stucture
|
Hi @GiudGiud,
|
soonklee
left a comment
There was a problem hiding this comment.
Pushed gold and test matrix. Ready for re-review.
GiudGiud
left a comment
There was a problem hiding this comment.
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 ## | |||
There was a problem hiding this comment.
| ## Heat Pipe Microreactor Steady State ## | |
| ## Heat Pipe Microreactor load follow ## |
| [null] | ||
| type = NullKernel | ||
| variable = temp | ||
| block = ${hp_blocks} | ||
| [] |
There was a problem hiding this comment.
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 ## | |||
There was a problem hiding this comment.
| ## 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 ## |
There was a problem hiding this comment.
| ## FY26 Summer Update for Solid Mechanics Implementation ## | |
| ## of partially-homogenized geometry ## | |
| ## FY26 Summer Update for Solid Mechanics Implementation ## |
| ## Heat Pipe Microreactor Steady State ## | ||
| ## Sockeye Grandchild Application input file ## |
There was a problem hiding this comment.
| ## Heat Pipe Microreactor Steady State ## | |
| ## Sockeye Grandchild Application input file ## | |
| ## Heat Pipe Microreactor Load following transient ## | |
| ## Sockeye Grandchild Application input file ## |
No description provided.