Skip to content

AUNF Mini-Canister Example Case#410

Open
edbworth wants to merge 19 commits into
idaholab:develfrom
edbworth:AUNF_Example_Case
Open

AUNF Mini-Canister Example Case#410
edbworth wants to merge 19 commits into
idaholab:develfrom
edbworth:AUNF_Example_Case

Conversation

@edbworth

@edbworth edbworth commented Apr 21, 2026

Copy link
Copy Markdown

Adding an example case that closes issue #293

Reason

Adding an example case to further demonstrate the functionality and abilities of TMAP8 for hydrogen transport in used nuclear fuel.

Design

2 input files
4 tests
gold folder
Documentation

Impact

TMAP8 will be used to characterize material behavior in new fuel storage technologies

@moosebuild

Copy link
Copy Markdown

Job Precheck, step Python: black format on f0ef0e4 wanted to post the following:

Python black formatting

Your code requires style changes.

A patch was generated and copied here.

You can directly apply the patch by running the following at the top level of your repository:

curl -s https://mooseframework.inl.gov/tmap8/docs/PRs/410/black/black.patch | git apply -v

Alternatively, you can run the following at the top level of your repository:

black --config pyproject.toml --workers 1 .

@cticenhour

Copy link
Copy Markdown
Member

Does this close #293? If so, please edit the top comment and note it for automatic closure.

@edbworth

Copy link
Copy Markdown
Author

@simopier @lin-yang-ly

Here is the example case for the AUNF experiments. We still need to do some work on the markdown files but the infrastructure should be mostly there.

Questions:

  1. The pressure implementation in steel_only.i can be one of three options: constant, time-ramped, or a data fit. These can be changed in the command line or in the file. The CSVdiff test is for the constant pressure case which is the default. Let me know if I should structure this differently

  2. The CSVdiff test for gas_steel.i has to be heavy, unless we shrink down the number of elements in the gas phase. Let me know your opinions.

  3. I would like to shift the simulation comparison metric to a modified version of RMSPE. This assumes that one of the quantities measured is "exact" or "truth". When comparing two simulation results, I'd like to move to NRMSE or SMAPE.

  4. Should I mention more about the RZ coordinate system in the documentation, and how the integrals in postprocessors are weighted to reflect the new geometry?

  5. I need a better understanding as to why the python files need to be in doc/content/examples/figures folders for the documentation to function, as is the case with some of the other example cases. Any insight here would be greatly appreciated. Thanks!

@simopier simopier self-assigned this Apr 21, 2026
@lin-yang-ly

Copy link
Copy Markdown
Collaborator

@simopier @lin-yang-ly

Here is the example case for the AUNF experiments. We still need to do some work on the markdown files but the infrastructure should be mostly there.

Questions:

  1. The pressure implementation in steel_only.i can be one of three options: constant, time-ramped, or a data fit. These can be changed in the command line or in the file. The CSVdiff test is for the constant pressure case which is the default. Let me know if I should structure this differently
  2. The CSVdiff test for gas_steel.i has to be heavy, unless we shrink down the number of elements in the gas phase. Let me know your opinions.
  3. I would like to shift the simulation comparison metric to a modified version of RMSPE. This assumes that one of the quantities measured is "exact" or "truth". When comparing two simulation results, I'd like to move to NRMSE or SMAPE.
  4. Should I mention more about the RZ coordinate system in the documentation, and how the integrals in postprocessors are weighted to reflect the new geometry?
  5. I need a better understanding as to why the python files need to be in doc/content/examples/figures folders for the documentation to function, as is the case with some of the other example cases. Any insight here would be greatly appreciated. Thanks!

Nice work Evan!

For 1, it depends on what you are comparing in your example. If you are currently building the model only for “constant pressure,” then it is sufficient to compare only the “constant pressure” results in CSVdiff. In general, please ensure that all gold files (from simulations) have corresponding tests. In addition, please also add the Exodiff tests for the simulations as well.
For 2, I think reducing the number of elements is a good idea. Please feel free to reduce the elements unless it has a impact on the accuracy. We usually keep the running time of light simulation less than 2s. Besides, you can try using a larger time step, as long as it does not reduce the accuracy apparently.
For 3, I think it is better to keep RMSPE for this comparison. In validation process, experimental data are typically regarded as the “true” values. Using the same metric also helps maintain consistency with other examples and validation cases.
For 4, I think you can simply note in the documentation that the current model uses the RZ coordinate system. If you want, you may include a brief sentence describing how the integration is calculated and cite the relevant MOOSE websites.
For 5, we need the symlinks of python files in doc/content/examples/figures for generating documentation figures. The plotting blocks in the documentation,

!media gas_steel_comparison.py
  image_name=partial_pressure_comparison.png
  style=width:50%;margin-bottom:2%;margin-left:auto;margin-right:auto
  id=fig:partial_pressure
  caption=Comparison of TMAP8 simulated H$_2$ partial pressure at the gas-steel interface against SRNL experimental measurements.

, will call these symlinks to produce figures in the expected locations. This approach supports automatic regeneration of comparison figures and keeps them up to date with the latest gold results.

In addition, please apply the black comments suggested in precheck to update the format in python files, so your checks can pass in following commit.

I hope these explanation make sense to you!

@simopier Please let me know if these answer make sense to you or not. Feel free to add more comments.

@edbworth

Copy link
Copy Markdown
Author
  1. The diffusion length verification is only valid for a constant pressure implementation (in gold file), but the SRNL_pressure implementation is more realistic as it uses experimental data. Is it ok that I have multiple options built in for the user to select? Or should I down select to one pressure implementation? If so, is there a preference?

  2. RMSPE is not a symmetric metric. It changes based on what is assumed to be the true solution. I'd argue that this is only appropriate for comparison against an analytical solution or experimental data. Are y'all open to expanding the metrics used in TMAP8 beyond RMSPE for something like the conservation of mass measurements and simulation profile comparisons. If so, let me do some more research and see if there are similar metrics that measure "closeness of results" rather than an explicit error.

@edbworth edbworth force-pushed the AUNF_Example_Case branch from f0ef0e4 to 5cb6647 Compare April 22, 2026 21:15
@moosebuild

Copy link
Copy Markdown

Job Precheck, step Size check on 5cb6647 wanted to post the following:

Warning: This PR changes repo size by 8.23 MiB.

@moosebuild

moosebuild commented Apr 23, 2026

Copy link
Copy Markdown

Job Documentation, step Sync to remote on 429c2ff wanted to post the following:

View the site here

This comment will be updated on new commits.

@simopier simopier 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.

Here is a quick review (not thorough yet).

I'll need to review this in more depth before I can fully comment on the RMSPE metric vs another one. Try to fix all the failures being flagged by the tests.

Let me and Lin know if you have any questions.

Comment thread doc/content/bib/tmap8.bib Outdated
Comment thread doc/content/bib/tmap8.bib Outdated
Comment thread doc/content/bib/tmap8.bib Outdated
Comment thread doc/content/bib/tmap8.bib Outdated
Comment thread doc/content/bib/tmap8.bib Outdated
Comment thread test/tests/mini_canister/gas_steel_comparison.py Outdated
Comment thread test/tests/mini_canister/tests Outdated
Comment thread test/tests/mini_canister/tests Outdated
Comment thread test/tests/mini_canister/tests Outdated
Comment thread test/tests/mini_canister/tests Outdated
@edbworth edbworth force-pushed the AUNF_Example_Case branch from 5cb6647 to c719706 Compare April 23, 2026 20:22
edbworth added 10 commits April 24, 2026 16:25
… file and deleted unnecessary codes in preparation for PR. Will continue cleanup for gas_steel model
…for gas_steel and documentation then should be ready for PR)
… and RunCommand for python files tests.

Added references to tmap8.bib
Added basic markdown file to describe example case in documentation (needs edits)
Added gold files for tests
Added picture of mini canister from SRNL report

(Ref. idaholab#293)
- Added exodiff tests for both input files
- reduced element size in gas phase for gas-steel model to remove heavy label for tests
- Python black formatting

Update 1 for PR:
- Update content/examples/figures with two comparison python files as symlinks (Why is this needed?)
- Update documentation to reflect new example case
- Fixed bug in tests

(Closes idaholab#293)
…wo python comparison scripts to one, bib changes, documentation changes, and test changes
…educe code duplication, resulting in new base input file and .param file. Documentation, python files, input files, and gold folder were all adjusted to fit this new structure
@edbworth edbworth force-pushed the AUNF_Example_Case branch from c719706 to 14ed1f2 Compare April 24, 2026 22:27
@moosebuild

moosebuild commented Apr 24, 2026

Copy link
Copy Markdown

Job Coverage, step Generate coverage on 429c2ff wanted to post the following:

Coverage

Coverage did not change

Full coverage report

This comment will be updated on new commits.

@lin-yang-ly lin-yang-ly 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.

@edbworth It looks nice! I have fews comments for current PR. Just let me know if you have any questions.

Comment thread test/tests/mini_canister/gas_steel.i Outdated
Comment thread test/tests/mini_canister/tests Outdated
Comment thread test/tests/mini_canister/tests Outdated
Comment thread doc/content/examples/mini_canister/index.md Outdated
Comment thread doc/content/examples/mini_canister/index.md Outdated
Comment thread doc/content/examples/mini_canister/index.md Outdated
Comment thread doc/content/examples/mini_canister/index.md Outdated
Comment thread doc/content/examples/mini_canister/index.md Outdated
Comment thread doc/content/examples/mini_canister/index.md Outdated
Comment thread doc/content/examples/mini_canister/index.md Outdated
@edbworth

Copy link
Copy Markdown
Author

Job Build test summary, step Build test summary on 14ed1f2 wanted to post the following:

Test summary

Compared against 18718cd in job civet.inl.gov/job/3772533.

Added tests

Test Time (s) Memory (MB)
test:mini_canister.gas_steel_csvdiff 5.41 75.91
test:mini_canister.steel_only_csvdiff 3.38 73.80
test:mini_canister.gas_steel_comparison 2.65 281.61

Looks like the tests are taking longer here than on my local machine (<2 s). Let me know if this is fine, or if I should try to reduce the testing time further.

@lin-yang-ly

Copy link
Copy Markdown
Collaborator

Job Build test summary, step Build test summary on 14ed1f2 wanted to post the following:

Test summary

Compared against 18718cd in job civet.inl.gov/job/3772533.

Added tests

Test Time (s) Memory (MB)
test:mini_canister.gas_steel_csvdiff 5.41 75.91
test:mini_canister.steel_only_csvdiff 3.38 73.80
test:mini_canister.gas_steel_comparison 2.65 281.61

Looks like the tests are taking longer here than on my local machine (<2 s). Let me know if this is fine, or if I should try to reduce the testing time further.

Since the HPC do run simulation slower, It is good to me only if the simulation run <2 s in local.

@lin-yang-ly lin-yang-ly 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.

@edbworth, Thanks for these updating! I have few more comments for current PR. Please let me know if you have any questions.

Comment thread moose
Comment thread test/tests/mini_canister/steel_only.i Outdated
Comment thread doc/content/examples/mini_canister/index.md Outdated
Comment thread doc/content/examples/mini_canister/index.md Outdated
Comment thread doc/content/examples/mini_canister/index.md Outdated
Comment thread doc/content/examples/mini_canister/index.md Outdated
Comment thread doc/content/examples/mini_canister/index.md Outdated
@edbworth edbworth force-pushed the AUNF_Example_Case branch from c5f8a81 to f8d406c Compare April 28, 2026 15:36
Co-authored-by: Lin Yang <132409718+lin-yang-ly@users.noreply.github.com>
@edbworth

Copy link
Copy Markdown
Author

Since we are using axisymmetric coordinates, we can present the equations in the documentation in terms of the radius $r$ or cartesian coordinate $x$. I believe MOOSE solves the system in cartesian coordinates still, but modifies any integral postprocessors to represent the cylindrical geometry. Thoughts?

@edbworth

Copy link
Copy Markdown
Author

Here is a quick review (not thorough yet).

I'll need to review this in more depth before I can fully comment on the RMSPE metric vs another one. Try to fix all the failures being flagged by the tests.

Let me and Lin know if you have any questions.

Lin and I met this morning and I finished up implementing his requested changes. The PR is ready for a more thorough review :)

@simopier simopier 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.

Looks good overall, thank you @edbworth and @lin-yang-ly!

Comment thread doc/content/examples/mini_canister/index.md Outdated
Comment thread doc/content/examples/mini_canister/index.md
Comment thread doc/content/examples/mini_canister/index.md
Comment thread doc/content/examples/mini_canister/index.md Outdated
Comment thread doc/content/examples/mini_canister/index.md Outdated
Comment thread doc/content/examples/mini_canister/index.md Outdated
Comment thread test/tests/mini_canister/gas_steel.i Outdated
Comment thread test/tests/mini_canister/gas_steel.i Outdated
Comment thread test/tests/mini_canister/gas_steel.i Outdated
Comment thread test/tests/mini_canister/gas_steel.i Outdated
Simple suggestions from PC's code review. Rest of reviewer comments will be addressed in next commit.

Co-authored-by: Pierre-Clement Simon <pierreclement.simon@gmail.com>
@simopier

simopier commented May 5, 2026

Copy link
Copy Markdown
Collaborator

The documentation fails with these errors:

TOKENIZE ERROR: Unable to find block 'Postprocessors/exact_diffusion_length' in /tmp/build/TMAP8/test/tests/mini_canister/gas_steel.i.
/tmp/build/TMAP8/doc/content/examples/mini_canister/index.md:137
   ┌────────────────────────────────────────────────────────────────────────────────────────────────────┐
137│                                                                                                    │
138│                                                                                                    │
139│!listing test/tests/mini_canister/gas_steel.i link=false block=Postprocessors/exact_diffusion_length│
   └────────────────────────────────────────────────────────────────────────────────────────────────────┘
Traceback (most recent call last):
  File "/tmp/build/TMAP8/moose/python/MooseDocs/base/lexers.py", line 242, in tokenize
    obj = self.buildToken(parent, pattern, info, page)
  File "/tmp/build/TMAP8/moose/python/MooseDocs/base/lexers.py", line 321, in buildToken
    obj = super(RecursiveLexer, self).buildToken(parent, pattern, info, page)
  File "/tmp/build/TMAP8/moose/python/MooseDocs/base/lexers.py", line 269, in buildToken
    return pattern.function(parent, info, page)
           ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
  File "/tmp/build/TMAP8/moose/python/MooseDocs/base/components.py", line 132, in __call__
    return self.createToken(parent, info, page, settings)
           ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/tmp/build/TMAP8/moose/python/MooseDocs/extensions/command.py", line 141, in createToken
    token = obj.createToken(parent, info, page, settings)
  File "/tmp/build/TMAP8/moose/python/MooseDocs/extensions/listing.py", line 345, in createToken
    content = get_content(filename)
  File "/tmp/build/TMAP8/moose/python/MooseDocs/extensions/listing.py", line 339, in get_content
    content = self.getContent(filename, settings)
  File "/tmp/build/TMAP8/moose/python/MooseDocs/extensions/listing.py", line 448, in getContent
    hit = self.extractInputBlocks(filename, settings["block"] or "")
  File "/tmp/build/TMAP8/moose/python/MooseDocs/extensions/listing.py", line 461, in extractInputBlocks
    raise exceptions.MooseDocsException(msg, block, filename)
MooseDocs.common.exceptions.MooseDocsException: Unable to find block 'Postprocessors/exact_diffusion_length' in /tmp/build/TMAP8/test/tests/mini_canister/gas_steel.i.


MooseDocs.base.readers (ForkProcess-8): 
TOKENIZE ERROR: Unable to find block 'Postprocessors/simulated_diffusion_length' in /tmp/build/TMAP8/test/tests/mini_canister/gas_steel.i.
/tmp/build/TMAP8/doc/content/examples/mini_canister/index.md:139
   ┌────────────────────────────────────────────────────────────────────────────────────────────────────────┐
139│                                                                                                        │
140│                                                                                                        │
141│!listing test/tests/mini_canister/gas_steel.i link=false block=Postprocessors/simulated_diffusion_length│
   └────────────────────────────────────────────────────────────────────────────────────────────────────────┘

I didn't check, but these pps might be in the base file, which would explain this error.

@edbworth edbworth requested review from lin-yang-ly and simopier May 22, 2026 22:47
@edbworth

edbworth commented Jun 1, 2026

Copy link
Copy Markdown
Author

@lin-yang-ly Looks like HPC was down when tests tried to run. Can you restart the tests please?

@moosebuild

Copy link
Copy Markdown

Job HPC on 97c1ef5 : invalidated by @lin-yang-ly

@simopier simopier 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.

Getting there, but I do have additional comments.

Let me know if you have any questions.


\begin{equation} \label{eq:assumed_pressure}
P = 0.10 \times 24 \text{ psi} \approx 16{,}547 \text{ Pa},
P = P_c \coloneqq 0.10 \times 24 \text{ psi} \approx 16{,}547 \text{ Pa},

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
P = P_c \coloneqq 0.10 \times 24 \text{ psi} \approx 16{,}547 \text{ Pa},
P = P_c = 0.10 \times 24 \text{ psi} \approx 16{,}547 \text{ Pa},


!style halign=left
For a semi-infinite slab with a constant-concentration boundary condition, the diffusion front advances as $\ell(t) = \sqrt{\pi D_s t}$, defined here as the $r$-intercept of the tangent line to the concentration profile at the inner surface. This analytical result provides a straightforward check that the numerical diffusion is correctly implemented. The simulated diffusion front is computed via the `simulated_diffusion_length` postprocessor as the $r$-intercept of the tangent line using the interface concentration and gradient. [fig:diffusion_length] shows the simulated diffusion front length, using a constant pressure, compared to the analytical expression.
As an internal consistency check, the total hydrogen mass integrated over the steel domain (`annular_cylinder_total_mass_steel`) is compared against the time-integrated net diffusive flux across the inner and outer boundaries (`annular_cylinder_time_integrated_flux`). Both integrals are weighted for the axisymmetric cylindrical geometry and then scaled by the canister height $h$ to represent 3D mass in $\mathrm{\mu}$mol H. [fig:steel_conservation] shows the percent difference between the two quantities as a single-curve conservation metric, defined as $\left|\,\mathrm{flux}/\mathrm{mass} - 1\,\right| \times 100\,\%$. The metric is highly sensitive to the postprocessors' small values within the first few timesteps, but quickly converges to a small value, and can be further reduced by refining the mesh and timestep.

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
As an internal consistency check, the total hydrogen mass integrated over the steel domain (`annular_cylinder_total_mass_steel`) is compared against the time-integrated net diffusive flux across the inner and outer boundaries (`annular_cylinder_time_integrated_flux`). Both integrals are weighted for the axisymmetric cylindrical geometry and then scaled by the canister height $h$ to represent 3D mass in $\mathrm{\mu}$mol H. [fig:steel_conservation] shows the percent difference between the two quantities as a single-curve conservation metric, defined as $\left|\,\mathrm{flux}/\mathrm{mass} - 1\,\right| \times 100\,\%$. The metric is highly sensitive to the postprocessors' small values within the first few timesteps, but quickly converges to a small value, and can be further reduced by refining the mesh and timestep.
As an internal consistency check, the total hydrogen mass integrated over the steel domain (`annular_cylinder_total_mass_steel`) is compared against the time-integrated net diffusive flux across the inner and outer boundaries (`annular_cylinder_time_integrated_flux`). Both integrals are weighted for the axisymmetric cylindrical geometry and then scaled by the canister height $h$ to represent 3D mass in $\mathrm{\mu}$mol H. [fig:steel_conservation] shows the percent difference between the two quantities, defined as $\left|\,\mathrm{flux}/\mathrm{mass} - 1\,\right| \times 100\,\%$. The metric is highly sensitive to the postprocessors' small values within the first few timesteps, but quickly converges to a small value, and can be further reduced by refining the mesh and timestep.

id=fig:diffusion_length
caption=Comparison of the simulated and analytical ($\sqrt{\pi D_s t}$) diffusion front length in the steel wall over 0.25 years.
id=fig:steel_conservation
caption=Conservation of mass check for the steel-only model: percent difference $\left|\,\mathrm{flux}/\mathrm{mass} - 1\,\right| \times 100\,\%$ between the accumulated boundary flux and the total H mass in the steel domain for $t>1$ day.

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
caption=Conservation of mass check for the steel-only model: percent difference $\left|\,\mathrm{flux}/\mathrm{mass} - 1\,\right| \times 100\,\%$ between the accumulated boundary flux and the total H mass in the steel domain for $t>1$ day.
Conservation of mass for the steel-only model: percent difference $\left|\,\mathrm{flux}/\mathrm{mass} - 1\,\right| \times 100\,\%$ between the accumulated boundary flux and the total H mass in the steel domain for $t>1$ day.

Comment on lines +147 to +149
!listing test/tests/mini_canister/steel_only.i link=false block=Postprocessors/exact_diffusion_length

!listing test/tests/mini_canister/steel_only.i link=false block=Postprocessors/simulated_diffusion_length

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
!listing test/tests/mini_canister/steel_only.i link=false block=Postprocessors/exact_diffusion_length
!listing test/tests/mini_canister/steel_only.i link=false block=Postprocessors/simulated_diffusion_length

!style halign=left
For a semi-infinite slab with a constant-concentration boundary condition, the diffusion front advances as $\ell(t) = \sqrt{\pi D_s t}$, defined here as the $r$-intercept of the tangent line to the concentration profile at the inner surface. This analytical result provides a straightforward check that the numerical diffusion is correctly implemented. The simulated diffusion front is computed via the `simulated_diffusion_length` postprocessor as the $r$-intercept of the tangent line using the interface concentration and gradient. [fig:diffusion_length] shows the simulated diffusion front length, using a constant pressure, compared to the analytical expression.
As an internal consistency check, the total hydrogen mass integrated over the steel domain (`annular_cylinder_total_mass_steel`) is compared against the time-integrated net diffusive flux across the inner and outer boundaries (`annular_cylinder_time_integrated_flux`). Both integrals are weighted for the axisymmetric cylindrical geometry and then scaled by the canister height $h$ to represent 3D mass in $\mathrm{\mu}$mol H. [fig:steel_conservation] shows the percent difference between the two quantities as a single-curve conservation metric, defined as $\left|\,\mathrm{flux}/\mathrm{mass} - 1\,\right| \times 100\,\%$. The metric is highly sensitive to the postprocessors' small values within the first few timesteps, but quickly converges to a small value, and can be further reduced by refining the mesh and timestep.

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
In the input files, these two postprocessors are defined as:
!listing test/tests/mini_canister/steel_only.i link=false block=Postprocessors/exact_diffusion_length
!listing test/tests/mini_canister/steel_only.i link=false block=Postprocessors/simulated_diffusion_length

id=fig:gas_steel_conservation
caption=Conservation of mass check for the gas-steel model: percent difference $\left|\,(\mathrm{flux}+\mathrm{source})/\mathrm{mass} - 1\,\right| \times 100\,\%$ between the accumulated boundary flux plus source term and the total H mass in the domain for $t>1$ day.

#### Gas-Phase Hydrogen Yield Validation

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
#### Gas-Phase Hydrogen Yield Validation
#### Gas-Phase Hydrogen Yield Calculations

caption=Comparison of TMAP8 total gas-phase hydrogen mass against SRNL experimental cumulative H$_2$ yield data.

#### Comparison of Steel Hydrogen Uptake Between Models
#### Partial Pressure Validation

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
#### Partial Pressure Validation
#### Partial Pressure Calculations

It needs to be very clear that this is NOT a validation.

caption=Comparison of TMAP8 total gas-phase hydrogen mass against SRNL experimental cumulative H$_2$ yield data.

#### Comparison of Steel Hydrogen Uptake Between Models
#### Partial Pressure Validation

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.

Can you explain what this section brings in addition to the previous results?

caption=Conservation of mass check for the gas-steel model: accumulated boundary flux plus source term vs. total H mass in the domain.
id=fig:model_comparison
caption=Comparison of total H mass in the steel wall (left axis) and fraction of total H inventory in the steel (right axis, dashed) between the steel-only (SRNL pressure fit) and gas-steel simulations.

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
The conclusion of this analysis is that only a small fraction of hydrogen permeates into the steel canister over the relevant time frame in these conditions. This observation is supported by both models.


!style halign=left
Because the gas-steel problem is nonlinear (the interface couples $C_g$ and $C_s$ through a square-root relationship), [gas_steel.i] uses `solve_type = Newton` with `line_search = NONE`.
Because the interface is nonlinear, [gas_steel.i] uses `solve_type = Newton`. Both models simulate 0.25 years (≈ 91.3 days) using a [BDF2.md] time integration scheme. This model is equipped with an [IterationAdaptiveDT.md] adaptive timestep that targets 5 Newton iterations per step.

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.

Do not mention both models here. You should be focusing on the model being discussed. If it is true for the other model as well, then specify that there too.

edbworth added 2 commits June 5, 2026 14:24
… derivatives at the boundary properly using a postprocessor rather than at the element center using AuxKernels on Constant Monomial variables. Updated point value postprocessors at boundaries to more robust SideDiffusiveFlux postprocessors.
@edbworth

edbworth commented Jun 5, 2026

Copy link
Copy Markdown
Author

Still need to input PC's comments here. No need to run tests until next commit.

@moosebuild

Copy link
Copy Markdown

Job Build test summary, step Build test summary on 429c2ff wanted to post the following:

Test summary

Compared against 681717b in job civet.inl.gov/job/3893670.

Added tests

Test Time (s) Memory (MB)
test:mini_canister.gas_steel_csvdiff 5.94 72.34
test:mini_canister.gas_steel_comparison 4.59 173.16
test:mini_canister.steel_only_csvdiff_const_pressure 3.42 75.45
test:mini_canister.steel_only_csvdiff_SRNL_pressure 2.60 56.23

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants