GPBR200 Pebble Thermomechanics with Bison
Contact: Zachary M. Prince, [email protected]
Model link: GPBR200 Bison Model
Here the input for the Bison-related physics (Williamson et al., 2021) of the GPBR200 model is presented. These physics include the heat conduction within a representative TRISO particle and a representative pebble matrix. This stand-alone input will be utilized later in Multiphysics Coupling to account for coupling with neutronics and thermal hydraulics. The details of this pebble model is presented in Prince et al. (2024); as such, this exposition will focus on explaining specific aspects of the input file.
Input File Variables
Most of the input file variables in this input are presented in the neutronics model. The two unique ones are the initial_temperature
and initial_power
, which are used to populate the heat source and BCs of the simulation. Eventually, these values will become irrelevant since the neutronics model with populate these values via coupling.
# Geometry ---------------------------------------------------------------------
pebble_radius = 3.0e-2 # pebble radius (m)
pebble_shell_thickness = 5.0e-03 # pebble fuel free zone thickness (graphite shell) (m)
pebble_volume = '${fparse 4/3*pi*pebble_radius^3}' # volume of the pebble (m3)
pebble_core_volume = '${fparse 4/3*pi*(pebble_radius-pebble_shell_thickness)^3}' # volume of the pebble occupied by TRISO (m3)
kernel_radius = 2.1250e-04 # kernel particle radius (m)
kernel_volume = '${fparse 4/3*pi*kernel_radius^3}' # volume of the kernel (m3)
buffer_thickness = 1.00e-04 # Thickness of buffer (m)
ipyc_thickness = 4.00e-05 # Thickness of IPyC (m)
sic_thickness = 3.50e-05 # Thickness of SiC (m)
opyc_thickness = 4.00e-05 # Thickness of OPyC (m)
triso_radius = '${fparse kernel_radius + buffer_thickness + ipyc_thickness + sic_thickness + opyc_thickness}'
triso_volume = '${fparse 4/3*pi*triso_radius^3}' # volume of the particle (m3)
filling_factor = 0.0934404551647307 # Particle filling factor
# ICs --------------------------------------------------------------------------
initial_temperature = 1000.0 # (K)
initial_power = 10e6 # (W)
# ==============================================================================
(htgr/gpbr200/pebble_thermomechanics/gpbr200_ss_bsht_pebble_triso.i)Mesh
This input represents a relatively simple 1D R-spherical model of both the pebble matrix and TRISO particle. The input creates a mesh for each of these geometries and combines them to create a single, disjoint mesh.
[Mesh]
block_id = ' 1 2 3 4 5 6 7'
block_name = 'core shell kernel buffer ipyc sic opyc'
coord_type = RSPHERICAL
[pebble_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '2.50e-02 5.00e-03'
ix = '15 3'
subdomain_id = '1 2'
[]
[triso_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '${kernel_radius} ${buffer_thickness} ${ipyc_thickness} ${sic_thickness} ${opyc_thickness}'
ix = '21 8 3 3 3'
subdomain_id = '3 4 5 6 7'
[]
[mesh_combine]
type = CombinerGenerator
inputs = 'pebble_mesh triso_mesh'
[]
[pebble_surface]
type = SideSetsAroundSubdomainGenerator
input = mesh_combine
block = '2'
fixed_normal = 1
normal = '1 0 0'
new_boundary = pebble_surface
[]
[triso_surface]
type = SideSetsAroundSubdomainGenerator
input = pebble_surface
block = '7'
fixed_normal = 1
normal = '1 0 0'
new_boundary = triso_surface
[]
[]
(htgr/gpbr200/pebble_thermomechanics/gpbr200_ss_bsht_pebble_triso.i)Physics
Variables
A temperature variable is defined on each of the two domains, one for the pebble temperature and TRISO temperature.
[Variables]
[T_pebble]
block = '1 2'
initial_condition = ${initial_temperature}
[]
[T_triso]
block = '3 4 5 6 7'
initial_condition = ${initial_temperature}
[]
[]
(htgr/gpbr200/pebble_thermomechanics/gpbr200_ss_bsht_pebble_triso.i)Kernels
This steady-state heat conduction input defines a heat diffusion and source kernel for each variable. The source for the pebble domain occurs in the "core" region of the pebble, i.e. where the TRISO particles are embedded. The source for the TRISO domain occurs in the fuel kernel. For both of the sources, the power density comes from the porous_media_power_density
postprocessor. The postprocessor is a constant value for now, but will eventually be populated by the neutronics model. The power density is scaled such that integration over just the fueled regions obtains the full power.
[Kernels]
# Pebble
[pebble_diffusion]
type = ADHeatConduction
variable = T_pebble
block = '1 2'
[]
[pebble_core_heat_source]
type = BodyForce
variable = T_pebble
postprocessor = porous_media_power_density
value = '${fparse pebble_volume/pebble_core_volume}'
block = '1'
[]
# TRISO
[triso_diffusion]
type = ADHeatConduction
variable = T_triso
block = '3 4 5 6 7'
[]
[kernel_heat_source]
type = BodyForce
variable = T_triso
postprocessor = porous_media_power_density
value = '${fparse pebble_volume*triso_volume/filling_factor/pebble_core_volume/kernel_volume}'
block = '3'
[]
[]
[Postprocessors]
[porous_media_power_density]
type = Receiver
default = ${initial_power}
[]
[]
(htgr/gpbr200/pebble_thermomechanics/gpbr200_ss_bsht_pebble_triso.i)Boundary Conditions
The surface temperature for the pebble is defined by the pebble_surface_temp
postprocessor, which is constant for this exposition, but will eventually come from Pronghorn solid heat conduction solve.
[BCs]
[pebble_surface_temp]
type = PostprocessorDirichletBC
variable = T_pebble
postprocessor = pebble_surface_temp
boundary = 'pebble_surface'
[]
[]
[Postprocessors]
[pebble_surface_temp]
type = Receiver
default = ${initial_temperature}
[]
[]
(htgr/gpbr200/pebble_thermomechanics/gpbr200_ss_bsht_pebble_triso.i)The pebble and kernel temperatures are coupled via the boundary condition on the surface of the kernel. This temperature is defined as the average temperature of the fueled region of the pebble; evaluated by the pebble_core_average_temp
postprocessor.
[BCs]
[triso_surface_temp]
type = PostprocessorDirichletBC
variable = T_triso
postprocessor = pebble_core_average_temp
boundary = 'triso_surface'
[]
[]
[Postprocessors]
[pebble_core_average_temp]
type = ElementAverageValue
variable = T_pebble
block = '1'
execute_on = 'LINEAR'
[]
[]
(htgr/gpbr200/pebble_thermomechanics/gpbr200_ss_bsht_pebble_triso.i)Materials
This input employs materials commonly used for TRISO compacts. Some of the parameters are not relevant to this model, but are required by the objects. This includes parameters related to specific heat, density, and neutron damage.
[Materials]
# Pebble.
[pebble_core]
type = ADGraphiteMatrixThermal
block = '1'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = ${filling_factor}
flux_conversion_factor = 1.0 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
[pebble_shell]
type = ADGraphiteMatrixThermal
block = '2'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = 0
flux_conversion_factor = 0.8 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
# TRISO.
[kernel]
type = ADUCOThermal
block = '3'
temperature = T_triso
# These do not matter since they are only relevant to heat capacity
initial_enrichment = 0.155
O_U = 1.5
C_U = 0.4
[]
[buffer]
type = ADBufferThermal
block = '4'
initial_density = 1050.0
[]
[ipyc]
type = ADHeatConductionMaterial
block = '5'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
[sic]
type = ADMonolithicSiCThermal
block = '6'
temperature = T_triso
thermal_conductivity_model = MILLER
[]
[opyc]
type = ADHeatConductionMaterial
block = '7'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
# Density
[density]
type = ADPiecewiseConstantByBlockMaterial
prop_name = 'density'
subdomain_to_prop_value = '1 1740.0
2 1740.0
3 10500.0
4 1050.0
5 1900.0
6 3180.0
7 1900.0'
[]
[]
(htgr/gpbr200/pebble_thermomechanics/gpbr200_ss_bsht_pebble_triso.i)Executioner
Since this model involves a steady-state equilibrium core, the input uses the Steady
executioner. The solver options shown are typical for nonlinear heat conduction problems. The input focuses on the absolute tolerance for convergence since the simulation gets rerun many times in the coupled simulation with marginally different power density, where relying on a relative tolerance could make the solver run into issues with round-off error.
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
line_search = 'l2'
# Linear/nonlinear iterations.
nl_rel_tol = 1e-40
nl_abs_tol = 1e-9
[]
(htgr/gpbr200/pebble_thermomechanics/gpbr200_ss_bsht_pebble_triso.i)Postprocessing
There are two postprocessors computed in the simulation, used later for cross-section evaluation.
[Postprocessors]
[fuel_average_temp]
type = ElementAverageValue
variable = T_triso
block = ' 3 '
[]
[moderator_average_temp]
type = ElementAverageValue
variable = T_pebble
block = ' 1 2 '
[]
[]
(htgr/gpbr200/pebble_thermomechanics/gpbr200_ss_bsht_pebble_triso.i)Results
The input can be run using a bison-opt
or blue_crab-opt
executable on a single processor; the execution time is essentially instantaneous.
blue_crab-opt -i gpbr200_ss_bsht_pebble_triso.i
The resulting fuel and moderator average temperatures for this stand-alone model are 1156 K and 1091 K, respectively.
References
- Zachary M. Prince, Paolo Balestra, Javier Ortensi, Sebastian Schunert, Olin Calvin, Joshua T. Hanophy, Kun Mo, and Gerhard Strydom.
Sensitivity analysis, surrogate modeling, and optimization of pebble-bed reactors considering normal and accident conditions.
Nuclear Engineering and Design, 428:113466, 2024.
doi:https://doi.org/10.1016/j.nucengdes.2024.113466.[BibTeX]
@article{prince2024Sensitivity, author = "Prince, Zachary M. and Balestra, Paolo and Ortensi, Javier and Schunert, Sebastian and Calvin, Olin and Hanophy, Joshua T. and Mo, Kun and Strydom, Gerhard", title = "Sensitivity analysis, surrogate modeling, and optimization of pebble-bed reactors considering normal and accident conditions", journal = "Nuclear Engineering and Design", volume = "428", pages = "113466", year = "2024", issn = "0029-5493", doi = "https://doi.org/10.1016/j.nucengdes.2024.113466" }
- Richard L. Williamson, Jason D. Hales, Stephen R. Novascone, Giovanni Pastore, Kyle A. Gamble, Benjamin W. Spencer, Wen Jiang, Stephanie A. Pitts, Albert Casagranda, Daniel Schwen, Adam X. Zabriskie, Aysenur Toptan, Russell Gardner, Christoper Matthews, Wenfeng Liu, and Hailong Chen.
Bison: a flexible code for advanced simulation of the performance of multiple nuclear fuel forms.
Nuclear Technology, 207(7):1–27, 2021.
URL: https://doi.org/10.1080/00295450.2020.1836940, doi:10.1080/00295450.2020.1836940.[BibTeX]
@article{BISON, author = "Williamson, Richard L. and Hales, Jason D. and Novascone, Stephen R. and Pastore, Giovanni and Gamble, Kyle A. and Spencer, Benjamin W. and Jiang, Wen and Pitts, Stephanie A. and Casagranda, Albert and Schwen, Daniel and Zabriskie, Adam X. and Toptan, Aysenur and Gardner, Russell and Matthews, Christoper and Liu, Wenfeng and Chen, Hailong", title = "BISON: A Flexible Code for Advanced Simulation of the Performance of Multiple Nuclear Fuel Forms", journal = "Nuclear Technology", volume = "207", number = "7", pages = "1-27", year = "2021", publisher = "Taylor \& Francis", doi = "10.1080/00295450.2020.1836940", URL = "https://doi.org/10.1080/00295450.2020.1836940" }
(htgr/gpbr200/pebble_thermomechanics/gpbr200_ss_bsht_pebble_triso.i)
# ==============================================================================
# Model description:
# Equilibrium core neutronics model coupled with TH and pebble temperature
# models.
# ------------------------------------------------------------------------------
# Idaho Falls, INL, April 5, 2022 14:09 PM
# Author(s)(name alph): David Reger, Dr. Javier Ortensi, Dr. Paolo Balestra,
# Dr. Ryan Stewart, Dr. Sebastian Schunert, Dr. Zachary Prince.
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Geometry ---------------------------------------------------------------------
pebble_radius = 3.0e-2 # pebble radius (m)
pebble_shell_thickness = 5.0e-03 # pebble fuel free zone thickness (graphite shell) (m)
pebble_volume = '${fparse 4/3*pi*pebble_radius^3}' # volume of the pebble (m3)
pebble_core_volume = '${fparse 4/3*pi*(pebble_radius-pebble_shell_thickness)^3}' # volume of the pebble occupied by TRISO (m3)
kernel_radius = 2.1250e-04 # kernel particle radius (m)
kernel_volume = '${fparse 4/3*pi*kernel_radius^3}' # volume of the kernel (m3)
buffer_thickness = 1.00e-04 # Thickness of buffer (m)
ipyc_thickness = 4.00e-05 # Thickness of IPyC (m)
sic_thickness = 3.50e-05 # Thickness of SiC (m)
opyc_thickness = 4.00e-05 # Thickness of OPyC (m)
triso_radius = '${fparse kernel_radius + buffer_thickness + ipyc_thickness + sic_thickness + opyc_thickness}'
triso_volume = '${fparse 4/3*pi*triso_radius^3}' # volume of the particle (m3)
filling_factor = 0.0934404551647307 # Particle filling factor
# ICs --------------------------------------------------------------------------
initial_temperature = 1000.0 # (K)
initial_power = 10e6 # (W)
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
block_id = ' 1 2 3 4 5 6 7'
block_name = 'core shell kernel buffer ipyc sic opyc'
coord_type = RSPHERICAL
[pebble_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '2.50e-02 5.00e-03'
ix = '15 3'
subdomain_id = '1 2'
[]
[triso_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '${kernel_radius} ${buffer_thickness} ${ipyc_thickness} ${sic_thickness} ${opyc_thickness}'
ix = '21 8 3 3 3'
subdomain_id = '3 4 5 6 7'
[]
[mesh_combine]
type = CombinerGenerator
inputs = 'pebble_mesh triso_mesh'
[]
[pebble_surface]
type = SideSetsAroundSubdomainGenerator
input = mesh_combine
block = '2'
fixed_normal = 1
normal = '1 0 0'
new_boundary = pebble_surface
[]
[triso_surface]
type = SideSetsAroundSubdomainGenerator
input = pebble_surface
block = '7'
fixed_normal = 1
normal = '1 0 0'
new_boundary = triso_surface
[]
[]
# ==============================================================================
# VARIABLES, KERNELS, AND BOUNDARY CONDITIONS
# ==============================================================================
[Variables]
[T_pebble]
block = '1 2'
initial_condition = ${initial_temperature}
[]
[T_triso]
block = '3 4 5 6 7'
initial_condition = ${initial_temperature}
[]
[]
[Kernels]
# Pebble
[pebble_diffusion]
type = ADHeatConduction
variable = T_pebble
block = '1 2'
[]
[pebble_core_heat_source]
type = BodyForce
variable = T_pebble
postprocessor = porous_media_power_density
value = '${fparse pebble_volume/pebble_core_volume}'
block = '1'
[]
# TRISO
[triso_diffusion]
type = ADHeatConduction
variable = T_triso
block = '3 4 5 6 7'
[]
[kernel_heat_source]
type = BodyForce
variable = T_triso
postprocessor = porous_media_power_density
value = '${fparse pebble_volume*triso_volume/filling_factor/pebble_core_volume/kernel_volume}'
block = '3'
[]
[]
[BCs]
[pebble_surface_temp]
type = PostprocessorDirichletBC
variable = T_pebble
postprocessor = pebble_surface_temp
boundary = 'pebble_surface'
[]
[triso_surface_temp]
type = PostprocessorDirichletBC
variable = T_triso
postprocessor = pebble_core_average_temp
boundary = 'triso_surface'
[]
[]
# ==============================================================================
# MATERIALS
# ==============================================================================
[Materials]
# Pebble.
[pebble_core]
type = ADGraphiteMatrixThermal
block = '1'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = ${filling_factor}
flux_conversion_factor = 1.0 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
[pebble_shell]
type = ADGraphiteMatrixThermal
block = '2'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = 0
flux_conversion_factor = 0.8 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
# TRISO.
[kernel]
type = ADUCOThermal
block = '3'
temperature = T_triso
# These do not matter since they are only relevant to heat capacity
initial_enrichment = 0.155
O_U = 1.5
C_U = 0.4
[]
[buffer]
type = ADBufferThermal
block = '4'
initial_density = 1050.0
[]
[ipyc]
type = ADHeatConductionMaterial
block = '5'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
[sic]
type = ADMonolithicSiCThermal
block = '6'
temperature = T_triso
thermal_conductivity_model = MILLER
[]
[opyc]
type = ADHeatConductionMaterial
block = '7'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
# Density
[density]
type = ADPiecewiseConstantByBlockMaterial
prop_name = 'density'
subdomain_to_prop_value = '1 1740.0
2 1740.0
3 10500.0
4 1050.0
5 1900.0
6 3180.0
7 1900.0'
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
line_search = 'l2'
# Linear/nonlinear iterations.
nl_rel_tol = 1e-40
nl_abs_tol = 1e-9
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Debug]
show_var_residual_norms = false
[]
[Postprocessors]
# Pebble/TRISO interaction.
[pebble_core_average_temp]
type = ElementAverageValue
variable = T_pebble
block = '1'
execute_on = 'LINEAR'
[]
# FROM transfer.
[pebble_surface_temp]
type = Receiver
default = ${initial_temperature}
[]
[porous_media_power_density]
type = Receiver
default = ${initial_power}
[]
# TO transfer.
[fuel_average_temp]
type = ElementAverageValue
variable = T_triso
block = ' 3 '
[]
[moderator_average_temp]
type = ElementAverageValue
variable = T_pebble
block = ' 1 2 '
[]
[]
[Outputs]
csv = true
[]
(htgr/gpbr200/pebble_thermomechanics/gpbr200_ss_bsht_pebble_triso.i)
# ==============================================================================
# Model description:
# Equilibrium core neutronics model coupled with TH and pebble temperature
# models.
# ------------------------------------------------------------------------------
# Idaho Falls, INL, April 5, 2022 14:09 PM
# Author(s)(name alph): David Reger, Dr. Javier Ortensi, Dr. Paolo Balestra,
# Dr. Ryan Stewart, Dr. Sebastian Schunert, Dr. Zachary Prince.
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Geometry ---------------------------------------------------------------------
pebble_radius = 3.0e-2 # pebble radius (m)
pebble_shell_thickness = 5.0e-03 # pebble fuel free zone thickness (graphite shell) (m)
pebble_volume = '${fparse 4/3*pi*pebble_radius^3}' # volume of the pebble (m3)
pebble_core_volume = '${fparse 4/3*pi*(pebble_radius-pebble_shell_thickness)^3}' # volume of the pebble occupied by TRISO (m3)
kernel_radius = 2.1250e-04 # kernel particle radius (m)
kernel_volume = '${fparse 4/3*pi*kernel_radius^3}' # volume of the kernel (m3)
buffer_thickness = 1.00e-04 # Thickness of buffer (m)
ipyc_thickness = 4.00e-05 # Thickness of IPyC (m)
sic_thickness = 3.50e-05 # Thickness of SiC (m)
opyc_thickness = 4.00e-05 # Thickness of OPyC (m)
triso_radius = '${fparse kernel_radius + buffer_thickness + ipyc_thickness + sic_thickness + opyc_thickness}'
triso_volume = '${fparse 4/3*pi*triso_radius^3}' # volume of the particle (m3)
filling_factor = 0.0934404551647307 # Particle filling factor
# ICs --------------------------------------------------------------------------
initial_temperature = 1000.0 # (K)
initial_power = 10e6 # (W)
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
block_id = ' 1 2 3 4 5 6 7'
block_name = 'core shell kernel buffer ipyc sic opyc'
coord_type = RSPHERICAL
[pebble_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '2.50e-02 5.00e-03'
ix = '15 3'
subdomain_id = '1 2'
[]
[triso_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '${kernel_radius} ${buffer_thickness} ${ipyc_thickness} ${sic_thickness} ${opyc_thickness}'
ix = '21 8 3 3 3'
subdomain_id = '3 4 5 6 7'
[]
[mesh_combine]
type = CombinerGenerator
inputs = 'pebble_mesh triso_mesh'
[]
[pebble_surface]
type = SideSetsAroundSubdomainGenerator
input = mesh_combine
block = '2'
fixed_normal = 1
normal = '1 0 0'
new_boundary = pebble_surface
[]
[triso_surface]
type = SideSetsAroundSubdomainGenerator
input = pebble_surface
block = '7'
fixed_normal = 1
normal = '1 0 0'
new_boundary = triso_surface
[]
[]
# ==============================================================================
# VARIABLES, KERNELS, AND BOUNDARY CONDITIONS
# ==============================================================================
[Variables]
[T_pebble]
block = '1 2'
initial_condition = ${initial_temperature}
[]
[T_triso]
block = '3 4 5 6 7'
initial_condition = ${initial_temperature}
[]
[]
[Kernels]
# Pebble
[pebble_diffusion]
type = ADHeatConduction
variable = T_pebble
block = '1 2'
[]
[pebble_core_heat_source]
type = BodyForce
variable = T_pebble
postprocessor = porous_media_power_density
value = '${fparse pebble_volume/pebble_core_volume}'
block = '1'
[]
# TRISO
[triso_diffusion]
type = ADHeatConduction
variable = T_triso
block = '3 4 5 6 7'
[]
[kernel_heat_source]
type = BodyForce
variable = T_triso
postprocessor = porous_media_power_density
value = '${fparse pebble_volume*triso_volume/filling_factor/pebble_core_volume/kernel_volume}'
block = '3'
[]
[]
[BCs]
[pebble_surface_temp]
type = PostprocessorDirichletBC
variable = T_pebble
postprocessor = pebble_surface_temp
boundary = 'pebble_surface'
[]
[triso_surface_temp]
type = PostprocessorDirichletBC
variable = T_triso
postprocessor = pebble_core_average_temp
boundary = 'triso_surface'
[]
[]
# ==============================================================================
# MATERIALS
# ==============================================================================
[Materials]
# Pebble.
[pebble_core]
type = ADGraphiteMatrixThermal
block = '1'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = ${filling_factor}
flux_conversion_factor = 1.0 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
[pebble_shell]
type = ADGraphiteMatrixThermal
block = '2'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = 0
flux_conversion_factor = 0.8 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
# TRISO.
[kernel]
type = ADUCOThermal
block = '3'
temperature = T_triso
# These do not matter since they are only relevant to heat capacity
initial_enrichment = 0.155
O_U = 1.5
C_U = 0.4
[]
[buffer]
type = ADBufferThermal
block = '4'
initial_density = 1050.0
[]
[ipyc]
type = ADHeatConductionMaterial
block = '5'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
[sic]
type = ADMonolithicSiCThermal
block = '6'
temperature = T_triso
thermal_conductivity_model = MILLER
[]
[opyc]
type = ADHeatConductionMaterial
block = '7'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
# Density
[density]
type = ADPiecewiseConstantByBlockMaterial
prop_name = 'density'
subdomain_to_prop_value = '1 1740.0
2 1740.0
3 10500.0
4 1050.0
5 1900.0
6 3180.0
7 1900.0'
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
line_search = 'l2'
# Linear/nonlinear iterations.
nl_rel_tol = 1e-40
nl_abs_tol = 1e-9
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Debug]
show_var_residual_norms = false
[]
[Postprocessors]
# Pebble/TRISO interaction.
[pebble_core_average_temp]
type = ElementAverageValue
variable = T_pebble
block = '1'
execute_on = 'LINEAR'
[]
# FROM transfer.
[pebble_surface_temp]
type = Receiver
default = ${initial_temperature}
[]
[porous_media_power_density]
type = Receiver
default = ${initial_power}
[]
# TO transfer.
[fuel_average_temp]
type = ElementAverageValue
variable = T_triso
block = ' 3 '
[]
[moderator_average_temp]
type = ElementAverageValue
variable = T_pebble
block = ' 1 2 '
[]
[]
[Outputs]
csv = true
[]
(htgr/gpbr200/pebble_thermomechanics/gpbr200_ss_bsht_pebble_triso.i)
# ==============================================================================
# Model description:
# Equilibrium core neutronics model coupled with TH and pebble temperature
# models.
# ------------------------------------------------------------------------------
# Idaho Falls, INL, April 5, 2022 14:09 PM
# Author(s)(name alph): David Reger, Dr. Javier Ortensi, Dr. Paolo Balestra,
# Dr. Ryan Stewart, Dr. Sebastian Schunert, Dr. Zachary Prince.
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Geometry ---------------------------------------------------------------------
pebble_radius = 3.0e-2 # pebble radius (m)
pebble_shell_thickness = 5.0e-03 # pebble fuel free zone thickness (graphite shell) (m)
pebble_volume = '${fparse 4/3*pi*pebble_radius^3}' # volume of the pebble (m3)
pebble_core_volume = '${fparse 4/3*pi*(pebble_radius-pebble_shell_thickness)^3}' # volume of the pebble occupied by TRISO (m3)
kernel_radius = 2.1250e-04 # kernel particle radius (m)
kernel_volume = '${fparse 4/3*pi*kernel_radius^3}' # volume of the kernel (m3)
buffer_thickness = 1.00e-04 # Thickness of buffer (m)
ipyc_thickness = 4.00e-05 # Thickness of IPyC (m)
sic_thickness = 3.50e-05 # Thickness of SiC (m)
opyc_thickness = 4.00e-05 # Thickness of OPyC (m)
triso_radius = '${fparse kernel_radius + buffer_thickness + ipyc_thickness + sic_thickness + opyc_thickness}'
triso_volume = '${fparse 4/3*pi*triso_radius^3}' # volume of the particle (m3)
filling_factor = 0.0934404551647307 # Particle filling factor
# ICs --------------------------------------------------------------------------
initial_temperature = 1000.0 # (K)
initial_power = 10e6 # (W)
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
block_id = ' 1 2 3 4 5 6 7'
block_name = 'core shell kernel buffer ipyc sic opyc'
coord_type = RSPHERICAL
[pebble_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '2.50e-02 5.00e-03'
ix = '15 3'
subdomain_id = '1 2'
[]
[triso_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '${kernel_radius} ${buffer_thickness} ${ipyc_thickness} ${sic_thickness} ${opyc_thickness}'
ix = '21 8 3 3 3'
subdomain_id = '3 4 5 6 7'
[]
[mesh_combine]
type = CombinerGenerator
inputs = 'pebble_mesh triso_mesh'
[]
[pebble_surface]
type = SideSetsAroundSubdomainGenerator
input = mesh_combine
block = '2'
fixed_normal = 1
normal = '1 0 0'
new_boundary = pebble_surface
[]
[triso_surface]
type = SideSetsAroundSubdomainGenerator
input = pebble_surface
block = '7'
fixed_normal = 1
normal = '1 0 0'
new_boundary = triso_surface
[]
[]
# ==============================================================================
# VARIABLES, KERNELS, AND BOUNDARY CONDITIONS
# ==============================================================================
[Variables]
[T_pebble]
block = '1 2'
initial_condition = ${initial_temperature}
[]
[T_triso]
block = '3 4 5 6 7'
initial_condition = ${initial_temperature}
[]
[]
[Kernels]
# Pebble
[pebble_diffusion]
type = ADHeatConduction
variable = T_pebble
block = '1 2'
[]
[pebble_core_heat_source]
type = BodyForce
variable = T_pebble
postprocessor = porous_media_power_density
value = '${fparse pebble_volume/pebble_core_volume}'
block = '1'
[]
# TRISO
[triso_diffusion]
type = ADHeatConduction
variable = T_triso
block = '3 4 5 6 7'
[]
[kernel_heat_source]
type = BodyForce
variable = T_triso
postprocessor = porous_media_power_density
value = '${fparse pebble_volume*triso_volume/filling_factor/pebble_core_volume/kernel_volume}'
block = '3'
[]
[]
[BCs]
[pebble_surface_temp]
type = PostprocessorDirichletBC
variable = T_pebble
postprocessor = pebble_surface_temp
boundary = 'pebble_surface'
[]
[triso_surface_temp]
type = PostprocessorDirichletBC
variable = T_triso
postprocessor = pebble_core_average_temp
boundary = 'triso_surface'
[]
[]
# ==============================================================================
# MATERIALS
# ==============================================================================
[Materials]
# Pebble.
[pebble_core]
type = ADGraphiteMatrixThermal
block = '1'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = ${filling_factor}
flux_conversion_factor = 1.0 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
[pebble_shell]
type = ADGraphiteMatrixThermal
block = '2'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = 0
flux_conversion_factor = 0.8 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
# TRISO.
[kernel]
type = ADUCOThermal
block = '3'
temperature = T_triso
# These do not matter since they are only relevant to heat capacity
initial_enrichment = 0.155
O_U = 1.5
C_U = 0.4
[]
[buffer]
type = ADBufferThermal
block = '4'
initial_density = 1050.0
[]
[ipyc]
type = ADHeatConductionMaterial
block = '5'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
[sic]
type = ADMonolithicSiCThermal
block = '6'
temperature = T_triso
thermal_conductivity_model = MILLER
[]
[opyc]
type = ADHeatConductionMaterial
block = '7'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
# Density
[density]
type = ADPiecewiseConstantByBlockMaterial
prop_name = 'density'
subdomain_to_prop_value = '1 1740.0
2 1740.0
3 10500.0
4 1050.0
5 1900.0
6 3180.0
7 1900.0'
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
line_search = 'l2'
# Linear/nonlinear iterations.
nl_rel_tol = 1e-40
nl_abs_tol = 1e-9
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Debug]
show_var_residual_norms = false
[]
[Postprocessors]
# Pebble/TRISO interaction.
[pebble_core_average_temp]
type = ElementAverageValue
variable = T_pebble
block = '1'
execute_on = 'LINEAR'
[]
# FROM transfer.
[pebble_surface_temp]
type = Receiver
default = ${initial_temperature}
[]
[porous_media_power_density]
type = Receiver
default = ${initial_power}
[]
# TO transfer.
[fuel_average_temp]
type = ElementAverageValue
variable = T_triso
block = ' 3 '
[]
[moderator_average_temp]
type = ElementAverageValue
variable = T_pebble
block = ' 1 2 '
[]
[]
[Outputs]
csv = true
[]
(htgr/gpbr200/pebble_thermomechanics/gpbr200_ss_bsht_pebble_triso.i)
# ==============================================================================
# Model description:
# Equilibrium core neutronics model coupled with TH and pebble temperature
# models.
# ------------------------------------------------------------------------------
# Idaho Falls, INL, April 5, 2022 14:09 PM
# Author(s)(name alph): David Reger, Dr. Javier Ortensi, Dr. Paolo Balestra,
# Dr. Ryan Stewart, Dr. Sebastian Schunert, Dr. Zachary Prince.
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Geometry ---------------------------------------------------------------------
pebble_radius = 3.0e-2 # pebble radius (m)
pebble_shell_thickness = 5.0e-03 # pebble fuel free zone thickness (graphite shell) (m)
pebble_volume = '${fparse 4/3*pi*pebble_radius^3}' # volume of the pebble (m3)
pebble_core_volume = '${fparse 4/3*pi*(pebble_radius-pebble_shell_thickness)^3}' # volume of the pebble occupied by TRISO (m3)
kernel_radius = 2.1250e-04 # kernel particle radius (m)
kernel_volume = '${fparse 4/3*pi*kernel_radius^3}' # volume of the kernel (m3)
buffer_thickness = 1.00e-04 # Thickness of buffer (m)
ipyc_thickness = 4.00e-05 # Thickness of IPyC (m)
sic_thickness = 3.50e-05 # Thickness of SiC (m)
opyc_thickness = 4.00e-05 # Thickness of OPyC (m)
triso_radius = '${fparse kernel_radius + buffer_thickness + ipyc_thickness + sic_thickness + opyc_thickness}'
triso_volume = '${fparse 4/3*pi*triso_radius^3}' # volume of the particle (m3)
filling_factor = 0.0934404551647307 # Particle filling factor
# ICs --------------------------------------------------------------------------
initial_temperature = 1000.0 # (K)
initial_power = 10e6 # (W)
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
block_id = ' 1 2 3 4 5 6 7'
block_name = 'core shell kernel buffer ipyc sic opyc'
coord_type = RSPHERICAL
[pebble_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '2.50e-02 5.00e-03'
ix = '15 3'
subdomain_id = '1 2'
[]
[triso_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '${kernel_radius} ${buffer_thickness} ${ipyc_thickness} ${sic_thickness} ${opyc_thickness}'
ix = '21 8 3 3 3'
subdomain_id = '3 4 5 6 7'
[]
[mesh_combine]
type = CombinerGenerator
inputs = 'pebble_mesh triso_mesh'
[]
[pebble_surface]
type = SideSetsAroundSubdomainGenerator
input = mesh_combine
block = '2'
fixed_normal = 1
normal = '1 0 0'
new_boundary = pebble_surface
[]
[triso_surface]
type = SideSetsAroundSubdomainGenerator
input = pebble_surface
block = '7'
fixed_normal = 1
normal = '1 0 0'
new_boundary = triso_surface
[]
[]
# ==============================================================================
# VARIABLES, KERNELS, AND BOUNDARY CONDITIONS
# ==============================================================================
[Variables]
[T_pebble]
block = '1 2'
initial_condition = ${initial_temperature}
[]
[T_triso]
block = '3 4 5 6 7'
initial_condition = ${initial_temperature}
[]
[]
[Kernels]
# Pebble
[pebble_diffusion]
type = ADHeatConduction
variable = T_pebble
block = '1 2'
[]
[pebble_core_heat_source]
type = BodyForce
variable = T_pebble
postprocessor = porous_media_power_density
value = '${fparse pebble_volume/pebble_core_volume}'
block = '1'
[]
# TRISO
[triso_diffusion]
type = ADHeatConduction
variable = T_triso
block = '3 4 5 6 7'
[]
[kernel_heat_source]
type = BodyForce
variable = T_triso
postprocessor = porous_media_power_density
value = '${fparse pebble_volume*triso_volume/filling_factor/pebble_core_volume/kernel_volume}'
block = '3'
[]
[]
[BCs]
[pebble_surface_temp]
type = PostprocessorDirichletBC
variable = T_pebble
postprocessor = pebble_surface_temp
boundary = 'pebble_surface'
[]
[triso_surface_temp]
type = PostprocessorDirichletBC
variable = T_triso
postprocessor = pebble_core_average_temp
boundary = 'triso_surface'
[]
[]
# ==============================================================================
# MATERIALS
# ==============================================================================
[Materials]
# Pebble.
[pebble_core]
type = ADGraphiteMatrixThermal
block = '1'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = ${filling_factor}
flux_conversion_factor = 1.0 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
[pebble_shell]
type = ADGraphiteMatrixThermal
block = '2'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = 0
flux_conversion_factor = 0.8 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
# TRISO.
[kernel]
type = ADUCOThermal
block = '3'
temperature = T_triso
# These do not matter since they are only relevant to heat capacity
initial_enrichment = 0.155
O_U = 1.5
C_U = 0.4
[]
[buffer]
type = ADBufferThermal
block = '4'
initial_density = 1050.0
[]
[ipyc]
type = ADHeatConductionMaterial
block = '5'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
[sic]
type = ADMonolithicSiCThermal
block = '6'
temperature = T_triso
thermal_conductivity_model = MILLER
[]
[opyc]
type = ADHeatConductionMaterial
block = '7'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
# Density
[density]
type = ADPiecewiseConstantByBlockMaterial
prop_name = 'density'
subdomain_to_prop_value = '1 1740.0
2 1740.0
3 10500.0
4 1050.0
5 1900.0
6 3180.0
7 1900.0'
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
line_search = 'l2'
# Linear/nonlinear iterations.
nl_rel_tol = 1e-40
nl_abs_tol = 1e-9
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Debug]
show_var_residual_norms = false
[]
[Postprocessors]
# Pebble/TRISO interaction.
[pebble_core_average_temp]
type = ElementAverageValue
variable = T_pebble
block = '1'
execute_on = 'LINEAR'
[]
# FROM transfer.
[pebble_surface_temp]
type = Receiver
default = ${initial_temperature}
[]
[porous_media_power_density]
type = Receiver
default = ${initial_power}
[]
# TO transfer.
[fuel_average_temp]
type = ElementAverageValue
variable = T_triso
block = ' 3 '
[]
[moderator_average_temp]
type = ElementAverageValue
variable = T_pebble
block = ' 1 2 '
[]
[]
[Outputs]
csv = true
[]
(htgr/gpbr200/pebble_thermomechanics/gpbr200_ss_bsht_pebble_triso.i)
# ==============================================================================
# Model description:
# Equilibrium core neutronics model coupled with TH and pebble temperature
# models.
# ------------------------------------------------------------------------------
# Idaho Falls, INL, April 5, 2022 14:09 PM
# Author(s)(name alph): David Reger, Dr. Javier Ortensi, Dr. Paolo Balestra,
# Dr. Ryan Stewart, Dr. Sebastian Schunert, Dr. Zachary Prince.
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Geometry ---------------------------------------------------------------------
pebble_radius = 3.0e-2 # pebble radius (m)
pebble_shell_thickness = 5.0e-03 # pebble fuel free zone thickness (graphite shell) (m)
pebble_volume = '${fparse 4/3*pi*pebble_radius^3}' # volume of the pebble (m3)
pebble_core_volume = '${fparse 4/3*pi*(pebble_radius-pebble_shell_thickness)^3}' # volume of the pebble occupied by TRISO (m3)
kernel_radius = 2.1250e-04 # kernel particle radius (m)
kernel_volume = '${fparse 4/3*pi*kernel_radius^3}' # volume of the kernel (m3)
buffer_thickness = 1.00e-04 # Thickness of buffer (m)
ipyc_thickness = 4.00e-05 # Thickness of IPyC (m)
sic_thickness = 3.50e-05 # Thickness of SiC (m)
opyc_thickness = 4.00e-05 # Thickness of OPyC (m)
triso_radius = '${fparse kernel_radius + buffer_thickness + ipyc_thickness + sic_thickness + opyc_thickness}'
triso_volume = '${fparse 4/3*pi*triso_radius^3}' # volume of the particle (m3)
filling_factor = 0.0934404551647307 # Particle filling factor
# ICs --------------------------------------------------------------------------
initial_temperature = 1000.0 # (K)
initial_power = 10e6 # (W)
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
block_id = ' 1 2 3 4 5 6 7'
block_name = 'core shell kernel buffer ipyc sic opyc'
coord_type = RSPHERICAL
[pebble_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '2.50e-02 5.00e-03'
ix = '15 3'
subdomain_id = '1 2'
[]
[triso_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '${kernel_radius} ${buffer_thickness} ${ipyc_thickness} ${sic_thickness} ${opyc_thickness}'
ix = '21 8 3 3 3'
subdomain_id = '3 4 5 6 7'
[]
[mesh_combine]
type = CombinerGenerator
inputs = 'pebble_mesh triso_mesh'
[]
[pebble_surface]
type = SideSetsAroundSubdomainGenerator
input = mesh_combine
block = '2'
fixed_normal = 1
normal = '1 0 0'
new_boundary = pebble_surface
[]
[triso_surface]
type = SideSetsAroundSubdomainGenerator
input = pebble_surface
block = '7'
fixed_normal = 1
normal = '1 0 0'
new_boundary = triso_surface
[]
[]
# ==============================================================================
# VARIABLES, KERNELS, AND BOUNDARY CONDITIONS
# ==============================================================================
[Variables]
[T_pebble]
block = '1 2'
initial_condition = ${initial_temperature}
[]
[T_triso]
block = '3 4 5 6 7'
initial_condition = ${initial_temperature}
[]
[]
[Kernels]
# Pebble
[pebble_diffusion]
type = ADHeatConduction
variable = T_pebble
block = '1 2'
[]
[pebble_core_heat_source]
type = BodyForce
variable = T_pebble
postprocessor = porous_media_power_density
value = '${fparse pebble_volume/pebble_core_volume}'
block = '1'
[]
# TRISO
[triso_diffusion]
type = ADHeatConduction
variable = T_triso
block = '3 4 5 6 7'
[]
[kernel_heat_source]
type = BodyForce
variable = T_triso
postprocessor = porous_media_power_density
value = '${fparse pebble_volume*triso_volume/filling_factor/pebble_core_volume/kernel_volume}'
block = '3'
[]
[]
[BCs]
[pebble_surface_temp]
type = PostprocessorDirichletBC
variable = T_pebble
postprocessor = pebble_surface_temp
boundary = 'pebble_surface'
[]
[triso_surface_temp]
type = PostprocessorDirichletBC
variable = T_triso
postprocessor = pebble_core_average_temp
boundary = 'triso_surface'
[]
[]
# ==============================================================================
# MATERIALS
# ==============================================================================
[Materials]
# Pebble.
[pebble_core]
type = ADGraphiteMatrixThermal
block = '1'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = ${filling_factor}
flux_conversion_factor = 1.0 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
[pebble_shell]
type = ADGraphiteMatrixThermal
block = '2'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = 0
flux_conversion_factor = 0.8 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
# TRISO.
[kernel]
type = ADUCOThermal
block = '3'
temperature = T_triso
# These do not matter since they are only relevant to heat capacity
initial_enrichment = 0.155
O_U = 1.5
C_U = 0.4
[]
[buffer]
type = ADBufferThermal
block = '4'
initial_density = 1050.0
[]
[ipyc]
type = ADHeatConductionMaterial
block = '5'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
[sic]
type = ADMonolithicSiCThermal
block = '6'
temperature = T_triso
thermal_conductivity_model = MILLER
[]
[opyc]
type = ADHeatConductionMaterial
block = '7'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
# Density
[density]
type = ADPiecewiseConstantByBlockMaterial
prop_name = 'density'
subdomain_to_prop_value = '1 1740.0
2 1740.0
3 10500.0
4 1050.0
5 1900.0
6 3180.0
7 1900.0'
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
line_search = 'l2'
# Linear/nonlinear iterations.
nl_rel_tol = 1e-40
nl_abs_tol = 1e-9
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Debug]
show_var_residual_norms = false
[]
[Postprocessors]
# Pebble/TRISO interaction.
[pebble_core_average_temp]
type = ElementAverageValue
variable = T_pebble
block = '1'
execute_on = 'LINEAR'
[]
# FROM transfer.
[pebble_surface_temp]
type = Receiver
default = ${initial_temperature}
[]
[porous_media_power_density]
type = Receiver
default = ${initial_power}
[]
# TO transfer.
[fuel_average_temp]
type = ElementAverageValue
variable = T_triso
block = ' 3 '
[]
[moderator_average_temp]
type = ElementAverageValue
variable = T_pebble
block = ' 1 2 '
[]
[]
[Outputs]
csv = true
[]
(htgr/gpbr200/pebble_thermomechanics/gpbr200_ss_bsht_pebble_triso.i)
# ==============================================================================
# Model description:
# Equilibrium core neutronics model coupled with TH and pebble temperature
# models.
# ------------------------------------------------------------------------------
# Idaho Falls, INL, April 5, 2022 14:09 PM
# Author(s)(name alph): David Reger, Dr. Javier Ortensi, Dr. Paolo Balestra,
# Dr. Ryan Stewart, Dr. Sebastian Schunert, Dr. Zachary Prince.
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Geometry ---------------------------------------------------------------------
pebble_radius = 3.0e-2 # pebble radius (m)
pebble_shell_thickness = 5.0e-03 # pebble fuel free zone thickness (graphite shell) (m)
pebble_volume = '${fparse 4/3*pi*pebble_radius^3}' # volume of the pebble (m3)
pebble_core_volume = '${fparse 4/3*pi*(pebble_radius-pebble_shell_thickness)^3}' # volume of the pebble occupied by TRISO (m3)
kernel_radius = 2.1250e-04 # kernel particle radius (m)
kernel_volume = '${fparse 4/3*pi*kernel_radius^3}' # volume of the kernel (m3)
buffer_thickness = 1.00e-04 # Thickness of buffer (m)
ipyc_thickness = 4.00e-05 # Thickness of IPyC (m)
sic_thickness = 3.50e-05 # Thickness of SiC (m)
opyc_thickness = 4.00e-05 # Thickness of OPyC (m)
triso_radius = '${fparse kernel_radius + buffer_thickness + ipyc_thickness + sic_thickness + opyc_thickness}'
triso_volume = '${fparse 4/3*pi*triso_radius^3}' # volume of the particle (m3)
filling_factor = 0.0934404551647307 # Particle filling factor
# ICs --------------------------------------------------------------------------
initial_temperature = 1000.0 # (K)
initial_power = 10e6 # (W)
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
block_id = ' 1 2 3 4 5 6 7'
block_name = 'core shell kernel buffer ipyc sic opyc'
coord_type = RSPHERICAL
[pebble_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '2.50e-02 5.00e-03'
ix = '15 3'
subdomain_id = '1 2'
[]
[triso_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '${kernel_radius} ${buffer_thickness} ${ipyc_thickness} ${sic_thickness} ${opyc_thickness}'
ix = '21 8 3 3 3'
subdomain_id = '3 4 5 6 7'
[]
[mesh_combine]
type = CombinerGenerator
inputs = 'pebble_mesh triso_mesh'
[]
[pebble_surface]
type = SideSetsAroundSubdomainGenerator
input = mesh_combine
block = '2'
fixed_normal = 1
normal = '1 0 0'
new_boundary = pebble_surface
[]
[triso_surface]
type = SideSetsAroundSubdomainGenerator
input = pebble_surface
block = '7'
fixed_normal = 1
normal = '1 0 0'
new_boundary = triso_surface
[]
[]
# ==============================================================================
# VARIABLES, KERNELS, AND BOUNDARY CONDITIONS
# ==============================================================================
[Variables]
[T_pebble]
block = '1 2'
initial_condition = ${initial_temperature}
[]
[T_triso]
block = '3 4 5 6 7'
initial_condition = ${initial_temperature}
[]
[]
[Kernels]
# Pebble
[pebble_diffusion]
type = ADHeatConduction
variable = T_pebble
block = '1 2'
[]
[pebble_core_heat_source]
type = BodyForce
variable = T_pebble
postprocessor = porous_media_power_density
value = '${fparse pebble_volume/pebble_core_volume}'
block = '1'
[]
# TRISO
[triso_diffusion]
type = ADHeatConduction
variable = T_triso
block = '3 4 5 6 7'
[]
[kernel_heat_source]
type = BodyForce
variable = T_triso
postprocessor = porous_media_power_density
value = '${fparse pebble_volume*triso_volume/filling_factor/pebble_core_volume/kernel_volume}'
block = '3'
[]
[]
[BCs]
[pebble_surface_temp]
type = PostprocessorDirichletBC
variable = T_pebble
postprocessor = pebble_surface_temp
boundary = 'pebble_surface'
[]
[triso_surface_temp]
type = PostprocessorDirichletBC
variable = T_triso
postprocessor = pebble_core_average_temp
boundary = 'triso_surface'
[]
[]
# ==============================================================================
# MATERIALS
# ==============================================================================
[Materials]
# Pebble.
[pebble_core]
type = ADGraphiteMatrixThermal
block = '1'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = ${filling_factor}
flux_conversion_factor = 1.0 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
[pebble_shell]
type = ADGraphiteMatrixThermal
block = '2'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = 0
flux_conversion_factor = 0.8 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
# TRISO.
[kernel]
type = ADUCOThermal
block = '3'
temperature = T_triso
# These do not matter since they are only relevant to heat capacity
initial_enrichment = 0.155
O_U = 1.5
C_U = 0.4
[]
[buffer]
type = ADBufferThermal
block = '4'
initial_density = 1050.0
[]
[ipyc]
type = ADHeatConductionMaterial
block = '5'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
[sic]
type = ADMonolithicSiCThermal
block = '6'
temperature = T_triso
thermal_conductivity_model = MILLER
[]
[opyc]
type = ADHeatConductionMaterial
block = '7'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
# Density
[density]
type = ADPiecewiseConstantByBlockMaterial
prop_name = 'density'
subdomain_to_prop_value = '1 1740.0
2 1740.0
3 10500.0
4 1050.0
5 1900.0
6 3180.0
7 1900.0'
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
line_search = 'l2'
# Linear/nonlinear iterations.
nl_rel_tol = 1e-40
nl_abs_tol = 1e-9
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Debug]
show_var_residual_norms = false
[]
[Postprocessors]
# Pebble/TRISO interaction.
[pebble_core_average_temp]
type = ElementAverageValue
variable = T_pebble
block = '1'
execute_on = 'LINEAR'
[]
# FROM transfer.
[pebble_surface_temp]
type = Receiver
default = ${initial_temperature}
[]
[porous_media_power_density]
type = Receiver
default = ${initial_power}
[]
# TO transfer.
[fuel_average_temp]
type = ElementAverageValue
variable = T_triso
block = ' 3 '
[]
[moderator_average_temp]
type = ElementAverageValue
variable = T_pebble
block = ' 1 2 '
[]
[]
[Outputs]
csv = true
[]
(htgr/gpbr200/pebble_thermomechanics/gpbr200_ss_bsht_pebble_triso.i)
# ==============================================================================
# Model description:
# Equilibrium core neutronics model coupled with TH and pebble temperature
# models.
# ------------------------------------------------------------------------------
# Idaho Falls, INL, April 5, 2022 14:09 PM
# Author(s)(name alph): David Reger, Dr. Javier Ortensi, Dr. Paolo Balestra,
# Dr. Ryan Stewart, Dr. Sebastian Schunert, Dr. Zachary Prince.
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Geometry ---------------------------------------------------------------------
pebble_radius = 3.0e-2 # pebble radius (m)
pebble_shell_thickness = 5.0e-03 # pebble fuel free zone thickness (graphite shell) (m)
pebble_volume = '${fparse 4/3*pi*pebble_radius^3}' # volume of the pebble (m3)
pebble_core_volume = '${fparse 4/3*pi*(pebble_radius-pebble_shell_thickness)^3}' # volume of the pebble occupied by TRISO (m3)
kernel_radius = 2.1250e-04 # kernel particle radius (m)
kernel_volume = '${fparse 4/3*pi*kernel_radius^3}' # volume of the kernel (m3)
buffer_thickness = 1.00e-04 # Thickness of buffer (m)
ipyc_thickness = 4.00e-05 # Thickness of IPyC (m)
sic_thickness = 3.50e-05 # Thickness of SiC (m)
opyc_thickness = 4.00e-05 # Thickness of OPyC (m)
triso_radius = '${fparse kernel_radius + buffer_thickness + ipyc_thickness + sic_thickness + opyc_thickness}'
triso_volume = '${fparse 4/3*pi*triso_radius^3}' # volume of the particle (m3)
filling_factor = 0.0934404551647307 # Particle filling factor
# ICs --------------------------------------------------------------------------
initial_temperature = 1000.0 # (K)
initial_power = 10e6 # (W)
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
block_id = ' 1 2 3 4 5 6 7'
block_name = 'core shell kernel buffer ipyc sic opyc'
coord_type = RSPHERICAL
[pebble_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '2.50e-02 5.00e-03'
ix = '15 3'
subdomain_id = '1 2'
[]
[triso_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '${kernel_radius} ${buffer_thickness} ${ipyc_thickness} ${sic_thickness} ${opyc_thickness}'
ix = '21 8 3 3 3'
subdomain_id = '3 4 5 6 7'
[]
[mesh_combine]
type = CombinerGenerator
inputs = 'pebble_mesh triso_mesh'
[]
[pebble_surface]
type = SideSetsAroundSubdomainGenerator
input = mesh_combine
block = '2'
fixed_normal = 1
normal = '1 0 0'
new_boundary = pebble_surface
[]
[triso_surface]
type = SideSetsAroundSubdomainGenerator
input = pebble_surface
block = '7'
fixed_normal = 1
normal = '1 0 0'
new_boundary = triso_surface
[]
[]
# ==============================================================================
# VARIABLES, KERNELS, AND BOUNDARY CONDITIONS
# ==============================================================================
[Variables]
[T_pebble]
block = '1 2'
initial_condition = ${initial_temperature}
[]
[T_triso]
block = '3 4 5 6 7'
initial_condition = ${initial_temperature}
[]
[]
[Kernels]
# Pebble
[pebble_diffusion]
type = ADHeatConduction
variable = T_pebble
block = '1 2'
[]
[pebble_core_heat_source]
type = BodyForce
variable = T_pebble
postprocessor = porous_media_power_density
value = '${fparse pebble_volume/pebble_core_volume}'
block = '1'
[]
# TRISO
[triso_diffusion]
type = ADHeatConduction
variable = T_triso
block = '3 4 5 6 7'
[]
[kernel_heat_source]
type = BodyForce
variable = T_triso
postprocessor = porous_media_power_density
value = '${fparse pebble_volume*triso_volume/filling_factor/pebble_core_volume/kernel_volume}'
block = '3'
[]
[]
[BCs]
[pebble_surface_temp]
type = PostprocessorDirichletBC
variable = T_pebble
postprocessor = pebble_surface_temp
boundary = 'pebble_surface'
[]
[triso_surface_temp]
type = PostprocessorDirichletBC
variable = T_triso
postprocessor = pebble_core_average_temp
boundary = 'triso_surface'
[]
[]
# ==============================================================================
# MATERIALS
# ==============================================================================
[Materials]
# Pebble.
[pebble_core]
type = ADGraphiteMatrixThermal
block = '1'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = ${filling_factor}
flux_conversion_factor = 1.0 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
[pebble_shell]
type = ADGraphiteMatrixThermal
block = '2'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = 0
flux_conversion_factor = 0.8 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
# TRISO.
[kernel]
type = ADUCOThermal
block = '3'
temperature = T_triso
# These do not matter since they are only relevant to heat capacity
initial_enrichment = 0.155
O_U = 1.5
C_U = 0.4
[]
[buffer]
type = ADBufferThermal
block = '4'
initial_density = 1050.0
[]
[ipyc]
type = ADHeatConductionMaterial
block = '5'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
[sic]
type = ADMonolithicSiCThermal
block = '6'
temperature = T_triso
thermal_conductivity_model = MILLER
[]
[opyc]
type = ADHeatConductionMaterial
block = '7'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
# Density
[density]
type = ADPiecewiseConstantByBlockMaterial
prop_name = 'density'
subdomain_to_prop_value = '1 1740.0
2 1740.0
3 10500.0
4 1050.0
5 1900.0
6 3180.0
7 1900.0'
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
line_search = 'l2'
# Linear/nonlinear iterations.
nl_rel_tol = 1e-40
nl_abs_tol = 1e-9
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Debug]
show_var_residual_norms = false
[]
[Postprocessors]
# Pebble/TRISO interaction.
[pebble_core_average_temp]
type = ElementAverageValue
variable = T_pebble
block = '1'
execute_on = 'LINEAR'
[]
# FROM transfer.
[pebble_surface_temp]
type = Receiver
default = ${initial_temperature}
[]
[porous_media_power_density]
type = Receiver
default = ${initial_power}
[]
# TO transfer.
[fuel_average_temp]
type = ElementAverageValue
variable = T_triso
block = ' 3 '
[]
[moderator_average_temp]
type = ElementAverageValue
variable = T_pebble
block = ' 1 2 '
[]
[]
[Outputs]
csv = true
[]
(htgr/gpbr200/pebble_thermomechanics/gpbr200_ss_bsht_pebble_triso.i)
# ==============================================================================
# Model description:
# Equilibrium core neutronics model coupled with TH and pebble temperature
# models.
# ------------------------------------------------------------------------------
# Idaho Falls, INL, April 5, 2022 14:09 PM
# Author(s)(name alph): David Reger, Dr. Javier Ortensi, Dr. Paolo Balestra,
# Dr. Ryan Stewart, Dr. Sebastian Schunert, Dr. Zachary Prince.
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Geometry ---------------------------------------------------------------------
pebble_radius = 3.0e-2 # pebble radius (m)
pebble_shell_thickness = 5.0e-03 # pebble fuel free zone thickness (graphite shell) (m)
pebble_volume = '${fparse 4/3*pi*pebble_radius^3}' # volume of the pebble (m3)
pebble_core_volume = '${fparse 4/3*pi*(pebble_radius-pebble_shell_thickness)^3}' # volume of the pebble occupied by TRISO (m3)
kernel_radius = 2.1250e-04 # kernel particle radius (m)
kernel_volume = '${fparse 4/3*pi*kernel_radius^3}' # volume of the kernel (m3)
buffer_thickness = 1.00e-04 # Thickness of buffer (m)
ipyc_thickness = 4.00e-05 # Thickness of IPyC (m)
sic_thickness = 3.50e-05 # Thickness of SiC (m)
opyc_thickness = 4.00e-05 # Thickness of OPyC (m)
triso_radius = '${fparse kernel_radius + buffer_thickness + ipyc_thickness + sic_thickness + opyc_thickness}'
triso_volume = '${fparse 4/3*pi*triso_radius^3}' # volume of the particle (m3)
filling_factor = 0.0934404551647307 # Particle filling factor
# ICs --------------------------------------------------------------------------
initial_temperature = 1000.0 # (K)
initial_power = 10e6 # (W)
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
block_id = ' 1 2 3 4 5 6 7'
block_name = 'core shell kernel buffer ipyc sic opyc'
coord_type = RSPHERICAL
[pebble_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '2.50e-02 5.00e-03'
ix = '15 3'
subdomain_id = '1 2'
[]
[triso_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '${kernel_radius} ${buffer_thickness} ${ipyc_thickness} ${sic_thickness} ${opyc_thickness}'
ix = '21 8 3 3 3'
subdomain_id = '3 4 5 6 7'
[]
[mesh_combine]
type = CombinerGenerator
inputs = 'pebble_mesh triso_mesh'
[]
[pebble_surface]
type = SideSetsAroundSubdomainGenerator
input = mesh_combine
block = '2'
fixed_normal = 1
normal = '1 0 0'
new_boundary = pebble_surface
[]
[triso_surface]
type = SideSetsAroundSubdomainGenerator
input = pebble_surface
block = '7'
fixed_normal = 1
normal = '1 0 0'
new_boundary = triso_surface
[]
[]
# ==============================================================================
# VARIABLES, KERNELS, AND BOUNDARY CONDITIONS
# ==============================================================================
[Variables]
[T_pebble]
block = '1 2'
initial_condition = ${initial_temperature}
[]
[T_triso]
block = '3 4 5 6 7'
initial_condition = ${initial_temperature}
[]
[]
[Kernels]
# Pebble
[pebble_diffusion]
type = ADHeatConduction
variable = T_pebble
block = '1 2'
[]
[pebble_core_heat_source]
type = BodyForce
variable = T_pebble
postprocessor = porous_media_power_density
value = '${fparse pebble_volume/pebble_core_volume}'
block = '1'
[]
# TRISO
[triso_diffusion]
type = ADHeatConduction
variable = T_triso
block = '3 4 5 6 7'
[]
[kernel_heat_source]
type = BodyForce
variable = T_triso
postprocessor = porous_media_power_density
value = '${fparse pebble_volume*triso_volume/filling_factor/pebble_core_volume/kernel_volume}'
block = '3'
[]
[]
[BCs]
[pebble_surface_temp]
type = PostprocessorDirichletBC
variable = T_pebble
postprocessor = pebble_surface_temp
boundary = 'pebble_surface'
[]
[triso_surface_temp]
type = PostprocessorDirichletBC
variable = T_triso
postprocessor = pebble_core_average_temp
boundary = 'triso_surface'
[]
[]
# ==============================================================================
# MATERIALS
# ==============================================================================
[Materials]
# Pebble.
[pebble_core]
type = ADGraphiteMatrixThermal
block = '1'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = ${filling_factor}
flux_conversion_factor = 1.0 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
[pebble_shell]
type = ADGraphiteMatrixThermal
block = '2'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = 0
flux_conversion_factor = 0.8 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
# TRISO.
[kernel]
type = ADUCOThermal
block = '3'
temperature = T_triso
# These do not matter since they are only relevant to heat capacity
initial_enrichment = 0.155
O_U = 1.5
C_U = 0.4
[]
[buffer]
type = ADBufferThermal
block = '4'
initial_density = 1050.0
[]
[ipyc]
type = ADHeatConductionMaterial
block = '5'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
[sic]
type = ADMonolithicSiCThermal
block = '6'
temperature = T_triso
thermal_conductivity_model = MILLER
[]
[opyc]
type = ADHeatConductionMaterial
block = '7'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
# Density
[density]
type = ADPiecewiseConstantByBlockMaterial
prop_name = 'density'
subdomain_to_prop_value = '1 1740.0
2 1740.0
3 10500.0
4 1050.0
5 1900.0
6 3180.0
7 1900.0'
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
line_search = 'l2'
# Linear/nonlinear iterations.
nl_rel_tol = 1e-40
nl_abs_tol = 1e-9
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Debug]
show_var_residual_norms = false
[]
[Postprocessors]
# Pebble/TRISO interaction.
[pebble_core_average_temp]
type = ElementAverageValue
variable = T_pebble
block = '1'
execute_on = 'LINEAR'
[]
# FROM transfer.
[pebble_surface_temp]
type = Receiver
default = ${initial_temperature}
[]
[porous_media_power_density]
type = Receiver
default = ${initial_power}
[]
# TO transfer.
[fuel_average_temp]
type = ElementAverageValue
variable = T_triso
block = ' 3 '
[]
[moderator_average_temp]
type = ElementAverageValue
variable = T_pebble
block = ' 1 2 '
[]
[]
[Outputs]
csv = true
[]
(htgr/gpbr200/pebble_thermomechanics/gpbr200_ss_bsht_pebble_triso.i)
# ==============================================================================
# Model description:
# Equilibrium core neutronics model coupled with TH and pebble temperature
# models.
# ------------------------------------------------------------------------------
# Idaho Falls, INL, April 5, 2022 14:09 PM
# Author(s)(name alph): David Reger, Dr. Javier Ortensi, Dr. Paolo Balestra,
# Dr. Ryan Stewart, Dr. Sebastian Schunert, Dr. Zachary Prince.
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Geometry ---------------------------------------------------------------------
pebble_radius = 3.0e-2 # pebble radius (m)
pebble_shell_thickness = 5.0e-03 # pebble fuel free zone thickness (graphite shell) (m)
pebble_volume = '${fparse 4/3*pi*pebble_radius^3}' # volume of the pebble (m3)
pebble_core_volume = '${fparse 4/3*pi*(pebble_radius-pebble_shell_thickness)^3}' # volume of the pebble occupied by TRISO (m3)
kernel_radius = 2.1250e-04 # kernel particle radius (m)
kernel_volume = '${fparse 4/3*pi*kernel_radius^3}' # volume of the kernel (m3)
buffer_thickness = 1.00e-04 # Thickness of buffer (m)
ipyc_thickness = 4.00e-05 # Thickness of IPyC (m)
sic_thickness = 3.50e-05 # Thickness of SiC (m)
opyc_thickness = 4.00e-05 # Thickness of OPyC (m)
triso_radius = '${fparse kernel_radius + buffer_thickness + ipyc_thickness + sic_thickness + opyc_thickness}'
triso_volume = '${fparse 4/3*pi*triso_radius^3}' # volume of the particle (m3)
filling_factor = 0.0934404551647307 # Particle filling factor
# ICs --------------------------------------------------------------------------
initial_temperature = 1000.0 # (K)
initial_power = 10e6 # (W)
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
block_id = ' 1 2 3 4 5 6 7'
block_name = 'core shell kernel buffer ipyc sic opyc'
coord_type = RSPHERICAL
[pebble_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '2.50e-02 5.00e-03'
ix = '15 3'
subdomain_id = '1 2'
[]
[triso_mesh]
type = CartesianMeshGenerator
dim = 1
# Uniform mesh.
dx = '${kernel_radius} ${buffer_thickness} ${ipyc_thickness} ${sic_thickness} ${opyc_thickness}'
ix = '21 8 3 3 3'
subdomain_id = '3 4 5 6 7'
[]
[mesh_combine]
type = CombinerGenerator
inputs = 'pebble_mesh triso_mesh'
[]
[pebble_surface]
type = SideSetsAroundSubdomainGenerator
input = mesh_combine
block = '2'
fixed_normal = 1
normal = '1 0 0'
new_boundary = pebble_surface
[]
[triso_surface]
type = SideSetsAroundSubdomainGenerator
input = pebble_surface
block = '7'
fixed_normal = 1
normal = '1 0 0'
new_boundary = triso_surface
[]
[]
# ==============================================================================
# VARIABLES, KERNELS, AND BOUNDARY CONDITIONS
# ==============================================================================
[Variables]
[T_pebble]
block = '1 2'
initial_condition = ${initial_temperature}
[]
[T_triso]
block = '3 4 5 6 7'
initial_condition = ${initial_temperature}
[]
[]
[Kernels]
# Pebble
[pebble_diffusion]
type = ADHeatConduction
variable = T_pebble
block = '1 2'
[]
[pebble_core_heat_source]
type = BodyForce
variable = T_pebble
postprocessor = porous_media_power_density
value = '${fparse pebble_volume/pebble_core_volume}'
block = '1'
[]
# TRISO
[triso_diffusion]
type = ADHeatConduction
variable = T_triso
block = '3 4 5 6 7'
[]
[kernel_heat_source]
type = BodyForce
variable = T_triso
postprocessor = porous_media_power_density
value = '${fparse pebble_volume*triso_volume/filling_factor/pebble_core_volume/kernel_volume}'
block = '3'
[]
[]
[BCs]
[pebble_surface_temp]
type = PostprocessorDirichletBC
variable = T_pebble
postprocessor = pebble_surface_temp
boundary = 'pebble_surface'
[]
[triso_surface_temp]
type = PostprocessorDirichletBC
variable = T_triso
postprocessor = pebble_core_average_temp
boundary = 'triso_surface'
[]
[]
# ==============================================================================
# MATERIALS
# ==============================================================================
[Materials]
# Pebble.
[pebble_core]
type = ADGraphiteMatrixThermal
block = '1'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = ${filling_factor}
flux_conversion_factor = 1.0 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
[pebble_shell]
type = ADGraphiteMatrixThermal
block = '2'
temperature = T_pebble
graphite_grade = A3_3_1800
packing_fraction = 0
flux_conversion_factor = 0.8 # Only used for irradiation correction
fast_neutron_fluence = 10e25
[]
# TRISO.
[kernel]
type = ADUCOThermal
block = '3'
temperature = T_triso
# These do not matter since they are only relevant to heat capacity
initial_enrichment = 0.155
O_U = 1.5
C_U = 0.4
[]
[buffer]
type = ADBufferThermal
block = '4'
initial_density = 1050.0
[]
[ipyc]
type = ADHeatConductionMaterial
block = '5'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
[sic]
type = ADMonolithicSiCThermal
block = '6'
temperature = T_triso
thermal_conductivity_model = MILLER
[]
[opyc]
type = ADHeatConductionMaterial
block = '7'
thermal_conductivity = 4.0
specific_heat = 1900.0
[]
# Density
[density]
type = ADPiecewiseConstantByBlockMaterial
prop_name = 'density'
subdomain_to_prop_value = '1 1740.0
2 1740.0
3 10500.0
4 1050.0
5 1900.0
6 3180.0
7 1900.0'
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
line_search = 'l2'
# Linear/nonlinear iterations.
nl_rel_tol = 1e-40
nl_abs_tol = 1e-9
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Debug]
show_var_residual_norms = false
[]
[Postprocessors]
# Pebble/TRISO interaction.
[pebble_core_average_temp]
type = ElementAverageValue
variable = T_pebble
block = '1'
execute_on = 'LINEAR'
[]
# FROM transfer.
[pebble_surface_temp]
type = Receiver
default = ${initial_temperature}
[]
[porous_media_power_density]
type = Receiver
default = ${initial_power}
[]
# TO transfer.
[fuel_average_temp]
type = ElementAverageValue
variable = T_triso
block = ' 3 '
[]
[moderator_average_temp]
type = ElementAverageValue
variable = T_pebble
block = ' 1 2 '
[]
[]
[Outputs]
csv = true
[]