-
Notifications
You must be signed in to change notification settings - Fork 12
Add documentation for slab benchmark multiphysics problem. #99
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
base: devel
Are you sure you want to change the base?
Conversation
|
Job Documentation, step Sync to remote on 6c91500 wanted to post the following: View the site here This comment will be updated on new commits. |
|
@simopier would you activate the tests please? |
simopier
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks great overall!
However, I would recommend adding a test to run a very small version of this as part of the testing suite to make sure we maintain this capability available to users.
doc/content/bib/references.bib
Outdated
| organization = {ANS}, | ||
| year = {2022}, | ||
| month = {07}, | ||
| booktitle = {Proceedings of PHYSOR}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| booktitle = {Proceedings of PHYSOR}, | |
| booktitle = {Proceedings of PHYSOR}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added in my commit
| T0 = 293 | ||
| Tmax = 393 | ||
| Tmin = 293 | ||
| L0 = 100 | ||
| L = 106.47 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| T0 = 293 | |
| Tmax = 393 | |
| Tmin = 293 | |
| L0 = 100 | |
| L = 106.47 | |
| T0 = 293 # K | |
| Tmax = 393 # K | |
| Tmin = 293 # K | |
| L0 = 100 # cm | |
| L = 106.47 # cm |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added in my commit
doc/content/verification_validation_examples/slab_benchmark/model/make_openmc_model_dagmc.py
Show resolved
Hide resolved
doc/content/verification_validation_examples/slab_benchmark/model/openmc.i
Show resolved
Hide resolved
doc/content/verification_validation_examples/slab_benchmark/model/openmc.i
Show resolved
Hide resolved
|
|
||
| ## Results | ||
|
|
||
| We see the heating result in [fig:heatingsol] compared against the analytic solution, as well as flux and temperature solutions in [fig:fluxsol] and [fig:tempsol]. Figures are only included for P=1.0E22 `[eV/s]` and on a fine mesh where the number of OpenMC and mesh elements is $N = 100$, since all results have a similar shape. Both the heating and flux tally everywhere agrees with the analytic solution within 3σ. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| We see the heating result in [fig:heatingsol] compared against the analytic solution, as well as flux and temperature solutions in [fig:fluxsol] and [fig:tempsol]. Figures are only included for P=1.0E22 `[eV/s]` and on a fine mesh where the number of OpenMC and mesh elements is $N = 100$, since all results have a similar shape. Both the heating and flux tally everywhere agrees with the analytic solution within 3σ. | |
| We see the heating result in [fig:heatingsol] compared against the analytic solution, as well as flux and temperature solutions in [fig:fluxsol] and [fig:tempsol]. Figures are only included for $P=1.0 \times 10^{22}$ eV/s and on a fine mesh where the number of OpenMC and mesh elements is $N = 100$, since all results have a similar shape. Both the heating and flux tally everywhere agrees with the analytic solution within 3$\sigma$. |
| caption=Temperature result from MOOSE for N = 100 mesh elements compared against the analytic solution. | ||
| style=display:block;margin-left:auto;margin-right:auto;width:40%; | ||
|
|
||
| Table [tab:results] shows results convergence with mesh refinement. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Table [tab:results] shows results convergence with mesh refinement. | |
| [tab:results] shows results convergence with mesh refinement. |
You shouldn't need Table here.
| Table [tab:results] shows results convergence with mesh refinement. | ||
|
|
||
| !table id=tab:results caption=Results and corresponding errors with different mesh sizes [!citep](eltawila2025). | ||
| | **Resolution | **Heated length `[cm]` | **Error `[μm]` | **$k_{\text{eff}}$** | **Error `[pcm]` | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same comment about ** and `
| | **Resolution | **Heated length `[cm]` | **Error `[μm]` | **$k_{\text{eff}}$** | **Error `[pcm]` | | ||
| | :- | :- | :- | :- | :- | | ||
| | **Analytic solution | 106.47 | -- | 0.29557 | -- | | ||
| | **5 | 106.3298 | -1402 | 0.29608 ± 0.00001 | 51 ± 1 | |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Once the documentation builds, I'll need to check that the plus/minus signs work in markdown.
| | **100 | 106.4745 | 45 | 0.29549 ± 0.00001 | -8 ± 1 | | ||
| | **200 | 106.4748 | 48 | 0.29556 ± 0.00001 | -1 ± 1 | | ||
|
|
||
| In [fig:fluxconv] and [fig:tempconv] convergence of flux and temperature relative L$^2$ norms, defined as |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| In [fig:fluxconv] and [fig:tempconv] convergence of flux and temperature relative L$^2$ norms, defined as | |
| In [fig:fluxconv] and [fig:tempconv], convergence of flux and temperature relative L$^2$ norms, defined as |
|
Job Build test summary, step Build test summary on 6c91500 wanted to post the following: Test summaryCompared against 09a0610 in job civet.inl.gov/job/3460799. Added tests
|
simopier
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you @meltawila!
Some additional comments on the new commits.
Things are moving in the right directlion.
By the way, for future rounds and PRs, it makes it easier over rounds of reviews if you incorporate the suggestions directly in the Files changed tab on the PR page. It incorporates the exact suggestion and then resolves the comment.
|
|
||
| @article{eltawila2025, | ||
| title = {Thermomechanics Coupling to Monte Carlo Particle Transport on Unstructured Mesh Geometries}, | ||
| journal = {SSRN Preprint}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To be updated
| # Cardinal input file for slab benchmark OpenMC model to couple with thermomechanics | ||
|
|
||
| P = 1.0e22 # eV/s | ||
| eV_to_J = 1.602e-19 # J/eV |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| eV_to_J = 1.602e-19 # J/eV | |
| eV_to_J = 1.602176634e-19 # J/eV |
This is what I meant by Use the value from PhysicalConstants.h instead.
doc/content/verification_validation_examples/slab_benchmark/model/openmc.i
Show resolved
Hide resolved
| [temp] | ||
| type = FunctionIC | ||
| variable = temp | ||
| function = 293 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
missed suggestion.
| q = 1e8 # eV | ||
| k0= 1.25e19 # eV/(s-cm-K^2) k(T) = k0 T(x) | ||
| phi0 = 2.5e14 # 1/s-cm^2 (flux at the origin) | ||
| eV_to_J = 1.602e-19 # J/eV |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| eV_to_J = 1.602e-19 # J/eV | |
| eV_to_J = 1.602176634e-19 # J/eV |
| @@ -0,0 +1,132 @@ | |||
| [GlobalParams] | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add a comment at the top of the input file, just like I requested for the others.
| @@ -0,0 +1,133 @@ | |||
| [GlobalParams] | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add a comment at the top of the input to describe what it does.
| @@ -0,0 +1,133 @@ | |||
| [GlobalParams] | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems like this input file has a lot of similarities with the call_tally.i input file. Do you think it would make sense to generate a base input file and utilize the !include capabilities to reduce duplication?
| \end{equation} | ||
|
|
||
| The example set of model parameter values shown in [tab:params] are the suggested benchmark parameters [!citep](griesheimer2022analytical), resulting in $k_\text{eff} = 0.29557$ and a heated slab length of $L = 106.47$ cm with $P = 1.0\times10^{22}$ eV/s. | ||
| The example set of model parameter values shown in [tab:params] are the suggested benchmark parameters [!citep](griesheimer2022analytical), resulting in $k_\text{eff} = 0.29557$ and a heated slab length of $L = 106.47$ `cm` with $P = 1.0\times10^{22}$ `eV/s`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
General comment: I do not think you need the "`" signs around units. We usually do not use them in papers and in the rest of the documentation. For consistency, I recommend removing them.
simopier
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some more geenral comments on the tests and documentation now that it builds.
Thank you!
|
|
||
| This verification problem presents capabilities to couple neutron transport with thermal conduction and material expansion. The analytic benchmark slab problem [!citep](griesheimer2022analytical) describes a slab where S$_2$ neutron transport is coupled with thermal conduction, convective boundary conditions, Doppler-broadened cross sections, and nonlinear thermal expansion effects along the heated slab. The benchmark provides the analytic solutions for steady-state temperature, neutron flux, heating, multiplication factor, and the heated slab length. | ||
|
|
||
| While the restriction to S$_2$ neutron transport would be considered overly simplistic for most radiation transport simulations, the objective here is to verify thermomechanical-OpenMC coupling using analytic solutions for three coupled solution fields (Displacements, temperature, and flux). Simplifications of each individual physics included in this model are not imposed by inherent limitations of the moving-mesh capabilities and only aim to allow the study on the interactions between multiphysics with an analytic solution. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| While the restriction to S$_2$ neutron transport would be considered overly simplistic for most radiation transport simulations, the objective here is to verify thermomechanical-OpenMC coupling using analytic solutions for three coupled solution fields (Displacements, temperature, and flux). Simplifications of each individual physics included in this model are not imposed by inherent limitations of the moving-mesh capabilities and only aim to allow the study on the interactions between multiphysics with an analytic solution. | |
| While the restriction to S$_2$ neutron transport would be considered overly simplistic for most radiation transport simulations, the objective here is to verify thermomechanical-OpenMC coupling using analytic solutions for three coupled solution fields (displacements, temperature, and flux). Simplifications of each individual physics included in this model are not imposed by inherent limitations of the moving-mesh capabilities and only aim to allow the study on the interactions between multiphysics with an analytic solution. |
|
|
||
| \begin{equation} | ||
| \label{eqn:rho_t} | ||
| \rho(x) = \rho_0\sqrt{\frac{T_0}{T(x)}} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| \rho(x) = \rho_0\sqrt{\frac{T_0}{T(x)}} | |
| \rho(x) = \rho_0\sqrt{\frac{T_0}{T(x)}}. |
|
|
||
| ## Analytic solutions | ||
|
|
||
| The reader is referred to the original benchmark publication [!citep](griesheimer2022analytical) for full details on the derivation of these solutions. Here we present the final formulas that we use later for comparison with our models. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| The reader is referred to the original benchmark publication [!citep](griesheimer2022analytical) for full details on the derivation of these solutions. Here we present the final formulas that we use later for comparison with our models. | |
| The reader is referred to the original benchmark publication [!citep](griesheimer2022analytical) and the updates made in [!citep](eltawila2025) for full details on the derivation of these solutions. Here we present the final formulas that we use later for comparison with our models. |
|
|
||
| The example set of model parameter values shown in [tab:params] are the suggested benchmark parameters [!citep](griesheimer2022analytical), resulting in $k_\text{eff} = 0.29557$ and a heated slab length of $L = 106.47$ `cm` with $P = 1.0\times10^{22}$ `eV/s`. | ||
|
|
||
| !table id=tab:params caption=Example set of model parameters with two different power scenarios [!citep](griesheimer2022analytical). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You describe two power scenarios here, but you only list one in the table. Make sure to be consistent.
| This model is using S$_2$ neutron transport to compare with the 1D Analytic benchmark. To replicate | ||
| the results, you have build your application with [this](https://github.com/meltawila/openmc_S2transport) patch of OpenMC. | ||
|
|
||
| Cardinal is used to couple OpenMC with MOOSE via Picard iteration. OpenMC tallies neutron flux, heating, and the multiplication factor. A conceptual depiction of the meshes used as well as the data transfers that occur on each Picard iteration is shown in [fig:schematic]. Three different meshes/geometries are involved. The thermomechanics mesh is a simple 1D mesh of $N$ EDGE2 elements; the thermomechanical physics do not require higher dimensional (e.g. 2D or 3D) meshes for this problem. The OpenMC geometry is represented using DAGMC, where cells are bounded by a triangulated surface (TRI3 elements). To facilitate data transfers between OpenMC and MOOSE thermomechanics, there is also an intermediate volumetric data transfer mesh composed of TET4 elements; no physics solves happen on this intermediate mesh. [fig:schematic] highlights one element (for MOOSE and the Cardinal intermediate data transfer mesh) and one OpenMC cell each in blue, with adjacent portions of the geometry shown in gray for context. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Cardinal is used to couple OpenMC with MOOSE via Picard iteration. OpenMC tallies neutron flux, heating, and the multiplication factor. A conceptual depiction of the meshes used as well as the data transfers that occur on each Picard iteration is shown in [fig:schematic]. Three different meshes/geometries are involved. The thermomechanics mesh is a simple 1D mesh of $N$ EDGE2 elements; the thermomechanical physics do not require higher dimensional (e.g. 2D or 3D) meshes for this problem. The OpenMC geometry is represented using DAGMC, where cells are bounded by a triangulated surface (TRI3 elements). To facilitate data transfers between OpenMC and MOOSE thermomechanics, there is also an intermediate volumetric data transfer mesh composed of TET4 elements; no physics solves happen on this intermediate mesh. [fig:schematic] highlights one element (for MOOSE and the Cardinal intermediate data transfer mesh) and one OpenMC cell each in blue, with adjacent portions of the geometry shown in gray for context. | |
| Cardinal is used to couple OpenMC with MOOSE via Picard iteration. OpenMC tallies neutron flux, heating, and the multiplication factor. A conceptual depiction of the meshes used as well as the data transfers that occur on each Picard iteration is shown in [fig:schematic]. Three different meshes/geometries are involved. The thermomechanics mesh is a simple 1D mesh of $N$ EDGE2 elements; the thermomechanical physics do not require higher dimensional (e.g., 2D or 3D) meshes for this problem. The OpenMC geometry is represented using DAGMC, where cells are bounded by a triangulated surface (TRI3 elements). To facilitate data transfers between OpenMC and MOOSE thermomechanics, there is also an intermediate volumetric data transfer mesh composed of TET4 elements; no physics solves happen on this intermediate mesh. [fig:schematic] highlights one element (for MOOSE and the Cardinal intermediate data transfer mesh) and one OpenMC cell each in blue, with adjacent portions of the geometry shown in gray for context. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The tests here do not reprocude the results from the paper, and are testing slightly other things using other input files.
I therefore have several reauests:
- could you please add a section in the documentation to explain these tests and describe the input files being used here?
- I'm not a fan of the fact that the input files relevant to the paper are not tested and will therefore likely get out of date as SALAMANDER/CARDINAL/OpenMC/MOOSE continue to evolve. If we can't reprocude the paper results with the regular build, is it not possible to create a test reciepe to use the OpenMC patch you need for this? At the very least, you should have all the input files go through a syntax check in one of the tests, or run for a short amount of time just to make sure they at least run. This should all be detailed a bit on the documentation page.
|
Do you need anything to finalize this, @meltawila? |
Closes #98