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

Adding the KRUSTY tutorial to the Cardinal website #883

Open
wants to merge 25 commits into
base: devel
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions doc/content/bib/cardinal.bib
Original file line number Diff line number Diff line change
Expand Up @@ -232,3 +232,40 @@ @inproceedings{eltawila
booktitle = {Proceedings of Physor},
year = 2024
}
@misc{wikiHP,
author = "Wikimedia Commons",
title = "File:Heat Pipe Mechanism.png --- Wikimedia Commons{,} the free media repository",
year = "2023",
url = "https://commons.wikimedia.org/w/index.php?title=File:Heat_Pipe_Mechanism.png&oldid=733530043",
note = "[Online; accessed 21-May-2024]"
}
@article{PostonGibsonGodfroy2020,
abstract = {The Kilowatt Reactor Using Stirling TechnologY (KRUSTY) was a reactor design, development, and test program to demonstrate the nuclear operation of a Kilopower reactor. Kilopower systems are intended to provide between 1 and 10 kW(electric) in space, or on the surface of planets or moons, with a clear evolution to substantially higher power systems. KRUSTY was a prototype of a 1-kW(electric) highly enriched uranium–fueled Kilopower system. In March of 2018, KRUSTY successfully operated as a fission power system and was the first nuclear-powered operation of any truly new reactor concept in the United States in over 40 years. This paper discusses the design of the KRUSTY reactor along with the philosophy, goals, and engineering work that ultimately led to KRUSTY’s success.},
author = {David I. Poston and Marc A. Gibson and Thomas Godfroy and Patrick R. McClure},
doi = {10.1080/00295450.2020.1725382},
issn = {19437471},
issue = {sup1},
journal = {Nuclear Technology},
keywords = {KRUSTY,Kilopower,fission power system,space nuclear power,space reactor},
month = {6},
pages = {13-30},
publisher = {Taylor and Francis Inc.},
title = {KRUSTY Reactor Design},
volume = {206},
year = {2020},
}
@article{SanchezGroveHayes2020,
abstract = {A series of critical experiments were conducted at the National Criticality Experiments Research Center (NCERC) in Nevada to evaluate the operational performance of a compact reactor that eventually will resemble the flight unit the National Aeronautics and Space Administration will use for deep space exploration. The results from the experiments are compared to preliminary results from computational models using MCNP and ENDF/B-7.1 neutron cross-section data.},
author = {Rene Sanchez and Travis Grove and David Hayes and Joetta Goda and George McKenzie and Jesson Hutchinson and Theresa Cutler and John Bounds and Jessie Walker and William Myers and Kristin Smith},
doi = {10.1080/00295450.2020.1722553},
issn = {19437471},
issue = {sup1},
journal = {Nuclear Technology},
keywords = {Reactivity,cents,keff,neutron cross section,βeff},
month = {6},
pages = {56-67},
publisher = {Taylor and Francis Inc.},
title = {Kilowatt Reactor Using Stirling TechnologY (KRUSTY) Component-Critical Experiments},
volume = {206},
year = {2020},
}
Binary file added doc/content/media/core_height.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/content/media/fig_heat_pipe.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/content/media/krusty_caseA.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/content/media/krusty_caseB.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/content/media/krusty_critical_comp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/content/media/krusty_mesh.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/content/media/krusty_openmc_xy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/content/media/krusty_openmc_xz.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/content/media/krusty_solid_mesh.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/content/media/power_krusty.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/content/media/temp_krusty.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
816 changes: 816 additions & 0 deletions doc/content/tutorials/KRUSTY.md

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions doc/content/tutorials/KRUSTYB.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Work In Progress
109 changes: 109 additions & 0 deletions doc/content/tutorials/KRUSTY_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
# Multiphysics Coupling Model of KRUSTY

In this tutorial, you will learn two different cases:

- Case A: couple OpenMC via temperature and heat source feedback to MOOSE for the KRUSTY reactor
- Case B: couple OpenMC via temperature and heat source feedback to MOOSE that is coupled to Sockeye via heat pipes temperature and heat flux feedback for the KRUSTY reactor



In [krusty_caseA] we can see the multi-application data transfer used for Case A,

!media krusty_caseA.png
id=krusty_caseA
caption=Multiapps hierarchy of the KRUSTY model for Case A.
style=width:45%;margin-left:auto;margin-right:auto;halign:center

and in [krusty_caseB] for Case B

!media krusty_caseB.png
id=krusty_caseB
caption=Multiapps hierarchy of the KRUSTY model for Case B.
style=width:60%;margin-left:auto;margin-right:auto;halign:center


You can access both cases using the following links:

- [Case A](KRUSTY.md)
- [Case B](KRUSTYB.md)

Next, we are going to present the geometry, the MOOSE heat conduction model, and the OpenMC model, which are common for both cases.

## Geometry

This model consists of a multiphysics simulation of the KRUSTY reactor, one of the simplest space power reactor concepts ever proposed. The relevant dimensions are summarized in [table1], and [krusty_solid_mesh] shows the geometry and gap thicknesses. The basic components are the fuel, heat pipes, control, reflectors, and shield. For the sake of simplification, we will only simulate the components within the region spanning from the bottom axial reflector to the top axial reflector along the z-direction, which entails neglecting components outside of this region. The control rod insertion is also being disregarded. In [krusty_critical_comp], we see a cross-section view of the KRUSTY components. In this drawing, we can see that the radial reflectors are fully withdrawn for better visualization. However, it is important to notice that in this example, we are considering that the radial reflectors are fully inserted.

!media krusty_critical_comp.png
id=krusty_critical_comp
caption=Cross-section view of KRUSTY components [!cite](SanchezGroveHayes2020).
style=width:35%;margin-left:auto;margin-right:auto;halign:center


The fuel is high enriched uranium U-7.65 Mo with a total length of 25 cm, an outer diameter of 11 cm, and the core contains a 4 cm hole to allow $B_4C$ control insertion. We can also briefly discuss the basic thermal cycle of a heat pipe, which is described in [fig_heat_pipe],

!media fig_heat_pipe.png
id=fig_heat_pipe
caption=KRUSTY geometry schematic [!cite](wikiHP).
style=width:45%;margin-left:auto;margin-right:auto;halign:center

where $1$ shows the working fluid evaporating to vapour by absorbing thermal energy, at $2$ the vapor migrates along the cavity to lower temperature end, and at $3$ the vapour condenses back to liquid and is absorbed by the wick, releasing thermal energy. Finally, at $4$ the working fluid flows back to the higher temperature end.

!table id=table1 caption=Geometric specifications for KRUSTY
| Component | Inner diameter (cm) | Outer diameter (cm) |
|-----------------|----------------------|----------------------|
| Fuel | 4.000 | 11.000 |
| Clamp | 11.812 | 12.130 |
| Vacuum can | 12.995 | 13.300 |
| Sleeve | 14.211 | 14.300 |
| Reflector | 14.500 | 38.100 |
| Shield | 41.000 | 101.900 |
| Heat pipe wall | 1.181 | 1.270 |


Currently, ongoing work is underway to benchmark Cardinal against KRUSTY, where the neglected components will be considered. This will relax the simplifications made in this example.


!media krusty_solid_mesh.png
id=krusty_solid_mesh
caption=KRUSTY geometry schematic [!cite](PostonGibsonGodfroy2020).
style=width:45%;margin-left:auto;margin-right:auto;halign:center

## MOOSE Heat Conduction Model

The MOOSE heat transfer module is used to solve for
[energy conservation in the solid](theory/heat_eqn.md).

[krusty_mesh] shows the mesh used in this model. The geometry was built using FUSION360, where the CAD file was imported into Cubit, where the mesh was build. Cubit can create meshes with user-defined geometry and customizable boundary layers. The Cubit script used to generate the solid mesh can be found in the `meshes` directory, where you will find two files, a `.sat` file that you will import into cubit, which will generate the geometry of KRUSTY, however in order to generete the mesh you will need to run the scripts in the `.txt` file in the cubit terminal, and then you can export the `.e` mesh file, which is the format that MOOSE can read. You can find the `.e` files in this box link: [box](https://anl.app.box.com/s/irryqrx97n5vi4jmct1e3roqgmhzic89/folder/141527707499). Do not forget to place the `.e` mesh files in the same directory as your `.i` files.

!media krusty_mesh.png
id=krusty_mesh
caption=KRUSTY mesh
style=width:45%;margin-left:auto;margin-right:auto;halign:center

## OpenMC Model

The OpenMC model is built using a [!ac](CSG)-type geometry. In a [!ac](CSG) model, cells are created from regions of space formed by half-space of various common surfaces, where every surface divides all of space into exactly two half-spaces. First, we define materials for each component of the reactor. Next, we define our geometric parameters, so we can start building our surfaces and manipulate them to create the geometry of each component of the KRUSTY reactor. Then, we need to create cells for each component and fill them with the materials that we previously created, so we can create a universe containg all the cells using `openmc.Universe`. We can visualize our geometry by slicing our plots in OpenMC, [krusty_openmc_xy] shows a xy slice, and [krusty_openmc_xz] a xz slice of the geometry plot.

!media krusty_openmc_xy.png
id=krusty_openmc_xy
caption=OpenMC xy slice plot.
style=width:50%;float:left;halign:center

!media krusty_openmc_xz.png
id=krusty_openmc_xz
caption=OpenMC xz slice plot.
style=width:50%;float:right;halign:center


We will use a linear-linear stochastic interpolation between the two cross section data sets nearest to the imposed temperature by setting the `method` parameter on `model.settings.temperature` to `interpolation`. When OpenMC is initialized, the cross section data is loaded for a temperature range specified by `range` in `settings`.

!listing /tutorials/krusty/without_sockeye/model.py

To generate the all of the XML files needed to run OpenMC, you just need to run:

```
model.export_to_xml()
```



1 change: 1 addition & 0 deletions doc/content/tutorials/openmc_solid.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ Four examples are provided:
- [Solid UO$_2$ pebbles](triso.md)
- [TRISO compacts](gas_compact.md)
- [DAGMC pincell](dagmc.md)
- [KRUSTY](KRUSTY_index.md)

Note that many of the features that are introduced in these
tutorials are *general* features that also apply to density feedback in OpenMC.
Expand Down
Loading