Depressurized Loss of Forced Cooling Transient (DLOFC)
The DLOFC transient simulation was initiated by (Reitsma et al., 2013):
Reducing the mass flow rate of the coolant linearly from its nominal value to zero over thirteen seconds.
The system pressure was reduced linearly from 7.0 MPa to atmospheric pressure (0.101 MPa).
the control rods were fully inserted (SCRAM) to shutdown the reactor after completing the flow rate and pressure ramps.
Beyond that, there were no changes to the system's main parameters, and the simulation was performed for up to 140 hours.
During the DLOFC transient simulation, coupled neutronics and thermal-hydraulics calculations were performed and the following progression of the reactor parameters was observed during the transient:
The reactor power starts decreasing at the beginning of the transient due to the negative thermal feedback.
The prompt power goes to zero while the remaining reactor power is just the decay heat component of the fuel.
The maximum fluid and solid temperatures start moving axially and toward the top of the core.
Temperature distributions change mainly in the radial direction, and there is a significant change in the solid temperature of the reflector and RPV regions.
The maximum fuel temperature reaches 1503.26 °C (1776.41 K) during DLOFC transient compared to the reference results which is around 1500 °C (Zheng et al., 2018) and (Strydom, 2008).
The set of input files to run the DLOFC can be thought of as the left hand side of the app setup show in Figure 1.

Figure 1: Schematic of the application setup for the DLOFC case.
Thus, two inputs are required for this problem. These are the htr_pm_neutronics_tr_dlofc.i and htr-pm-flow-fv-tr-dlofc.i The first input sets the neutronics calculations and calls the second input which performs the Pronghorn calculations. The neutronics input is mostly similar to the input in the neutronics section model. The major difference is in the MultiApps block in which the pebble/Triso conduction solution is eliminated compared to the steady state input htr_pm_neutronics_ss.i.
[MultiApps]
[flow]
type = TransientMultiApp
input_files = 'htr-pm-flow-fv-tr-dlofc.i'
positions = '0 0 0'
execute_on = 'TIMESTEP_END'
[]
[](htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_tr_dlofc.i)For the reader's information, Mesh is imported from a previous run instead of redefining it.
[Mesh]
[file]
type = FileMeshGenerator
# for single-physics simulation restart (as the parent app)
# file = 'htr-pm-flow-fv-ss_out.e'
# use_for_exodus_restart = true
# for multiphysics simulation restart (as a multiapp)
# We use the checkpoint to make sure to use the same partitioning
file = 'htr_pm_griffin_ss_out_flow0_cp/LATEST'
[]
coord_type = RZ
[](htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-tr-dlofc.i)The Physics block, variables are imported from the Exodus file. Notice velocity_variable, pressure_variable, and fluid_temperature_variable definition in Physics.
[Physics]
[NavierStokes]
[Flow]
[all]
# exodus restart
# initialize_variables_from_mesh_file = true
# basic settings
block = ${fluid_blocks}
compressibility = 'weakly-compressible'
gravity = '0.0 -9.81 0.0'
# Variables, defined below for the Exodus restart
velocity_variable = 'superficial_vel_x superficial_vel_y'
pressure_variable = 'pressure'
# Porous treatement
porous_medium_treatment = true
friction_types = 'darcy forchheimer'
friction_coeffs = 'Darcy_coefficient Forchheimer_coefficient'
use_friction_correction = true
consistent_scaling = ${scaling}
porosity_smoothing_layers = 0
# fluid properties
density = 'rho'
dynamic_viscosity = 'mu'
# boundary conditions
inlet_boundaries = 'reactor_inlet'
momentum_inlet_types = 'flux-mass'
flux_inlet_pps = 'set_inlet_mfr'
flux_inlet_directions = '0 1 0'
outlet_boundaries = 'reactor_outlet'
momentum_outlet_types = 'fixed-pressure'
pressure_functors = 'pressure_out_fn'
wall_boundaries = 'pbed_inner pbed_outer hot_plenum_walls cold_plenum_walls riser_walls bypass_wall'
momentum_wall_types = 'symmetry slip slip slip slip slip'
# numerical parameters
pressure_face_interpolation = average
momentum_advection_interpolation = upwind
mass_advection_interpolation = upwind
# prevents solution jump on future restarts
time_derivative_contributes_to_RC_coefficients = false
[]
[]
[FluidHeatTransfer]
[all]
# exodus restart
# initialize_variables_from_mesh_file = true
fluid_temperature_variable = 'T_fluid'
block = ${fluid_blocks}
# material properties
thermal_conductivity = 'kappa'
specific_heat = 'cp'
# convective heat transfer
ambient_convection_blocks = '1 2 3 5 6 61 71'
ambient_convection_alpha = 'alpha'
ambient_temperature = 'T_solid'
# boundary conditions
# see Flow physics for list of boundaries
energy_inlet_types = 'flux-mass'
energy_inlet_functors = '${T_inlet}'
energy_wall_types = 'heatflux heatflux heatflux heatflux heatflux heatflux'
energy_wall_functors = '0 0 0 0 0 0'
# numerical parameters
energy_advection_interpolation = upwind
energy_scaling = 5e-6
coupled_flow_physics = 'all'
system_names = 'nl0'
[]
[]
[]
[](htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-tr-dlofc.i)Additional initial conditions are imported from previous run as in the Variables block.
[Variables]
[T_solid]
type = INSFVEnergyVariable
block = '${solid_blocks}'
# restart from exodus
# initial_from_file_var = T_solid
# initial_from_file_timestep = LATEST
[]
[](htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-tr-dlofc.i)The most important difference between the steady state and the transient case calculation is the fact that the transient case (i.e. DLOFC) changes the boundary conditions to mimic the DLOFC, while the steady state case is run with eigenvalue for neutronics and in "transient" mode for other physics until the calculation is converged to the steady state solution. The pressure, temperature, mass flow variations are defined in the Functions block as follows
[Functions]
# viscosity was ramped in equilibrium calculation
[mu_ramp_fn]
type = PiecewiseLinear
x = '0 1 1e+7'
y = '1 1 1'
[]
# DLOFC transient
[mfr_fn]
type = PiecewiseLinear
x = ' 0 1 13'
y = ' ${mfr} ${mfr} 0.0'
[]
[pressure_out_fn]
type = PiecewiseLinear
x = ' 0 1 13'
y = '${p_outlet} ${p_outlet} 101325.0'
[]
# increase time steps as transient slows down
[dt_max_fn]
type = PiecewiseLinear
x = '-10 0 16 30 1000 5000 20000 100000 200000 500000'
y = ' 1 1 1 1 50 100 200 400 400 500'
[]
[](htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-tr-dlofc.i)Results
The fluid temperature distribution at different time steps of the transient are in Figure 2. The pebble surface temperature distribution as a function of time is shown in Figure 3.

Figure 2: Fluid temperature distribution as a function of time in DLOFC accident condition

Figure 3: Pebble surface temperature distribution as a function of time in DLOFC accident condition
Input Execution
The execution lines for the equilibrium core calculations, null transient, and DLOFC transient
mpirun -np 48 blue_crab-opt -i htr_pm_neutronics_ss.i
mpirun -np 48 blue_crab-opt -i htr_pm_neutronics_tr_null.i
mpirun -np 48 blue_crab-opt -i htr_pm_neutronics_tr_dlofc.i
Note that the steady state solution should be provided before running any transient calculations to setup initial conditions.
References
- Frederik Reitsma, Kostadin Ivanov, Enrico Sartori, Hyun Chul Lee, Antti Daavittila, Jaakko Leppanen, Enrico Girardi, Maurice Grimod, Oliver Koeberl, Simone Massara, and others.
Pbmr coupled neutronics/thermal-hydraulics transient benchmark. the pbmr-400 core design-volume 1 the benchmark definition.
2013.[Export]
BibTeX
@article{reitsma2013pbmr, author = "Reitsma, Frederik and Ivanov, Kostadin and Sartori, Enrico and Lee, Hyun Chul and Daavittila, Antti and Leppanen, Jaakko and Girardi, Enrico and Grimod, Maurice and Koeberl, Oliver and Massara, Simone and others", title = "PBMR Coupled Neutronics/Thermal-hydraulics Transient Benchmark. The PBMR-400 Core Design-Volume 1 The Benchmark Definition", year = "2013", journal = "" }RIS
TY - JOUR AU - Reitsma, Frederik AU - Ivanov, Kostadin AU - Sartori, Enrico AU - Lee, Hyun Chul AU - Daavittila, Antti AU - Leppanen, Jaakko AU - Girardi, Enrico AU - Grimod, Maurice AU - Koeberl, Oliver AU - Massara, Simone AU - others TI - PBMR Coupled Neutronics/Thermal-hydraulics Transient Benchmark. The PBMR-400 Core Design-Volume 1 The Benchmark Definition JO - PY - 2013 ER -Plain Text
Frederik Reitsma, Kostadin Ivanov, Enrico Sartori, Hyun Chul Lee, Antti Daavittila, Jaakko Leppanen, Enrico Girardi, Maurice Grimod, Oliver Koeberl, Simone Massara, and others. Pbmr coupled neutronics/thermal-hydraulics transient benchmark. the pbmr-400 core design-volume 1 the benchmark definition. 2013. - Gerhard Strydom.
Tinte transient results for the oecd 400 mw pbmr benchmark.
Proceedings of ICAPP ‘08, Anaheim, USA, 2008.[Export]
BibTeX
@article{strydom2008tinte, author = "Strydom, Gerhard", title = "TINTE transient results for the OECD 400 MW PBMR benchmark", journal = "Proceedings of ICAPP ‘08, Anaheim, USA", year = "2008" }RIS
TY - JOUR AU - Strydom, Gerhard TI - TINTE transient results for the OECD 400 MW PBMR benchmark JO - Proceedings of ICAPP ‘08, Anaheim, USA PY - 2008 ER -Plain Text
Gerhard Strydom. Tinte transient results for the oecd 400 mw pbmr benchmark. Proceedings of ICAPP ‘08, Anaheim, USA, 2008. - Yanhua Zheng, Marek M Stempniewicz, Zhipeng Chen, and Lei Shi.
Study on the dlofc and plofc accidents of the 200 mwe pebble-bed modular high temperature gas-cooled reactor with tinte and spectra codes.
Annals of Nuclear Energy, 120:763–777, 2018.[Export]
BibTeX
@article{zheng2018study, author = "Zheng, Yanhua and Stempniewicz, Marek M and Chen, Zhipeng and Shi, Lei", title = "Study on the DLOFC and PLOFC accidents of the 200 MWe pebble-bed modular high temperature gas-cooled reactor with TINTE and SPECTRA codes", journal = "Annals of Nuclear Energy", volume = "120", pages = "763--777", year = "2018", publisher = "Elsevier" }RIS
TY - JOUR AU - Zheng, Yanhua AU - Stempniewicz, Marek M AU - Chen, Zhipeng AU - Shi, Lei TI - Study on the DLOFC and PLOFC accidents of the 200 MWe pebble-bed modular high temperature gas-cooled reactor with TINTE and SPECTRA codes JO - Annals of Nuclear Energy PY - 2018 VL - 120 PB - Elsevier SP - 763 EP - 777 ER -Plain Text
Yanhua Zheng, Marek M Stempniewicz, Zhipeng Chen, and Lei Shi. Study on the dlofc and plofc accidents of the 200 mwe pebble-bed modular high temperature gas-cooled reactor with tinte and spectra codes. Annals of Nuclear Energy, 120:763–777, 2018.
(htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr_pm_neutronics_tr_dlofc.i)
# ==============================================================================
# Model description
# DLOFC Transient neutronics model coupled with TH and pebble temperature models
# ------------------------------------------------------------------------------
# Idaho Falls, INL, April 11, 2023
# Author(s): Dr. Mustafa Jaradat Dr. Sebastian Schunert, Dr. Javier Ortensi
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# initial_temperature = 500.0 # (K)
total_power = 250.0e+6 # Total reactor Power (W)
burnup_group_boundaries = '5.35E+13 1.070E+14 1.604E+14 2.139E+14 2.674E+14 3.209E+14 3.743E+14 4.278E+14 4.818E+14'
#==========================================================================
# GLOBAL PARAMETERS
# ==============================================================================
[GlobalParams]
library_file ='../xsections/HTR-PM_9G-Tnew.xml'
library_name = 'HTR-PM'
is_meter = true
[]
[TransportSystems]
particle = neutron
equation_type = transient
G = 9
ReflectingBoundary = 'left'
VacuumBoundary = 'right top bottom'
[diff]
scheme = CFEM-Diffusion
family = LAGRANGE
order = FIRST
n_delay_groups = 6
assemble_scattering_jacobian = true
assemble_fission_jacobian = true
[]
[]
[Problem]
restart_file_base = 'htr_pm_griffin_ss_out_cp/LATEST'
[]
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
type = MeshGeneratorMesh
block_id = ' 1 2 3 4 5 6
7 8 61 71'
block_name = 'pebble_bed upper_ref lower_ref cavity hot_plenum cold_plenum
radial_ref carbon_brick riser cr'
#uniform_refine = 1
[cartesian_mesh]
type = CartesianMeshGenerator
dim = 2
# Total height: 16.8 m
dx = ' 0.250 0.250 0.250 0.250 0.250 0.250
0.010 0.050 0.130 0.080 0.080 0.080
0.200 0.120 0.125 0.125'
ix = ' 1 1 1 1 1 1
1 1 1 1 1 1
1 1 1 1'
dy = ' 0.400 0.400 0.100 0.100 0.800 0.300 0.200 0.300 0.216 0.412
0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550
0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550 0.550
0.760 0.712 0.300 0.400 0.400'
# base: converges fine
iy = ' 1 1 1 1 2 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
2 2 1 1 1'
subdomain_id = ' 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8
7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8
5 5 5 5 5 5 5 5 5 7 7 7 61 7 8 8
3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8
3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8
3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8
3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8
3 3 3 3 3 3 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
1 1 1 1 1 1 7 7 71 7 7 7 61 7 8 8
4 4 4 4 4 4 7 7 71 7 7 7 61 7 8 8
4 2 2 2 2 2 7 7 71 7 7 7 61 7 8 8
6 6 6 6 6 6 6 6 71 6 6 6 6 7 8 8
7 7 7 7 7 7 7 7 71 7 7 7 7 7 8 8
8 8 8 8 8 8 8 8 71 8 8 8 8 8 8 8 '
[]
[assign_material_id]
type = SubdomainExtraElementIDGenerator
input = cartesian_mesh
extra_element_id_names = 'material_id'
subdomains = '1 2 3 4 5 6 7 8 61 71'
extra_element_ids = '1 1 1 1 1 1 1 1 1 1'
[]
coord_type = RZ
[]
# ==============================================================================
# AUXVARIABLES AND AUXKERNELS
# ==============================================================================
[Functions]
[CR_bott]
type = PiecewiseLinear
x = ' 0.000 13.000 16.000 1.8e+5 '
y = '13.678 13.678 1.800 1.800'
[]
[dt_max_fn]
type = PiecewiseLinear
x = '-10 0 16 30 1000 5000 20000 100000 200000 500000'
y = ' 1 1 1 1 50 100 200 400 400 500'
[]
[del_t_function]
type = ParsedFunction
expression = 'dt'
symbol_names = 'dt'
symbol_values = 'dt'
[]
[]
[AuxVariables]
[T_solid]
family = MONOMIAL
order = CONSTANT
[]
[T_fluid]
family = MONOMIAL
order = CONSTANT
[]
[Tfuel_avg]
order = CONSTANT
family = MONOMIAL
[]
[Tfuel_max]
order = CONSTANT
family = MONOMIAL
[]
[Tmod_avg]
order = CONSTANT
family = MONOMIAL
[]
[Tmod_max]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
family = MONOMIAL
order = CONSTANT
# reloaded from file
# initial_condition = 0.39
block = 'pebble_bed'
[]
[del_t]
type = MooseVariableFVReal
[]
[prompt_power_density]
order = CONSTANT
family = MONOMIAL
[]
[power_density]
order = CONSTANT
family = MONOMIAL
[]
[decay_heat_bybg]
family = MONOMIAL
order = CONSTANT
components = 10
block = 'pebble_bed'
[]
[decay_heat]
family = MONOMIAL
order = CONSTANT
block = 'pebble_bed'
[]
[power_peaking]
order = CONSTANT
family = MONOMIAL
[]
[pden_avg]
order = CONSTANT
family = MONOMIAL
[]
[pden_max]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[Tfuel_avg]
type = PebbleAveragedAux
block = 1
variable = Tfuel_avg
array_variable = triso_temperature
pebble_volume_fraction = pebble_volume_fraction
n_fresh_pebble_types = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[Tfuel_max]
type = ArrayVarExtremeValueAux
block = 1
variable = Tfuel_max
array_variable = triso_temperature
value_type = MAX
execute_on = 'INITIAL TIMESTEP_END'
[]
[Tmod_avg]
type = PebbleAveragedAux
block = 1
variable = Tmod_avg
array_variable = graphite_temperature
pebble_volume_fraction = pebble_volume_fraction
n_fresh_pebble_types = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[Tmod_max]
type = ArrayVarExtremeValueAux
block = 1
variable = Tmod_max
array_variable = graphite_temperature
value_type = MAX
execute_on = 'INITIAL TIMESTEP_END'
[]
[del_t_aux]
type = FunctionAux
variable = del_t
function = del_t_function
[]
[power_peaking]
type = ParsedAux
block = 'pebble_bed'
variable = power_peaking
coupled_variables = 'power_density'
expression = 'power_density / 3.21525E+06'
execute_on = 'INITIAL timestep_end'
[]
[pden_max_aux]
type = ArrayVarExtremeValueAux
block = 'pebble_bed'
variable = pden_max
array_variable = partial_power_density
value_type = MAX
execute_on = 'INITIAL TIMESTEP_END'
[]
[pden_avg_aux]
type = PebbleAveragedAux
block = 'pebble_bed'
variable = pden_avg
array_variable = partial_power_density
pebble_volume_fraction = pebble_volume_fraction
n_fresh_pebble_types = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
# ==============================================================================
# MATERIALS
# ==============================================================================
[PebbleBed]
block = 'pebble_bed'
power = ${fparse total_power}
integrated_power_postprocessor = total_power
power_density_variable = power_density
family = MONOMIAL
order = CONSTANT
porosity_name = porosity
burnup_group_boundaries = ${burnup_group_boundaries}
# cross section data
library_file = '../xsections/HTR-PM_9G-Tnew.xml'
library_name = 'HTR-PM'
burnup_grid_name = 'Burnup'
fuel_temperature_grid_name = 'Tfuel'
moderator_temperature_grid_name = 'Tmod'
# avoid physicality check (old XS library)
dtl_physicality = DISABLE
# transmutation data
dataset = ISOXML
isoxml_data_file = '../xsections/DRAGON5_DT_DH_295.xml'
isoxml_lib_name = 'DRAGON'
# initial_moderator_temperature = ${initial_temperature}
# initial_fuel_temperature = ${initial_temperature}
n_fresh_pebble_types = 1
fresh_pebble_compositions = 'fresh_pebble'
track_isotopes = ' U235 U236 U238 PU238 PU239 PU240 PU241 PU242 AM241
AM242M CS135 CS137 XE135 XE136 I131 I135 SR90'
# pebble conduction
pebble_conduction_input_file = 'pebble_triso.i'
pebble_positions_file = 'pebble_heat_pos.txt'
surface_temperature_sub_app_postprocessor = T_surface
surface_temperature_main_app_variable = T_solid
power_sub_app_postprocessor = pebble_power_density
fuel_temperature_sub_app_postprocessor = T_fuel
moderator_temperature_sub_app_postprocessor = T_mod
decay_heat = true
[]
[Materials]
# upper and lower reflectors at 70% density
[axial_reflector]
type = CoupledFeedbackNeutronicsMaterial
block = 'upper_ref lower_ref'
grid_names = 'Tmod'
grid_variables = 'T_solid'
plus = true
isotopes = 'Graphite U235'
densities = '6.25284E-02 0.0'
material_id = 1
[]
# upper lower plenum at 80% density
[plenum]
type = CoupledFeedbackNeutronicsMaterial
block = 'hot_plenum cold_plenum'
grid_names = 'Tmod'
grid_variables = 'T_solid'
plus = true
isotopes = 'Graphite U235'
densities = '7.14611E-02 0.0'
material_id = 1
[]
[reflector]
type = CoupledFeedbackNeutronicsMaterial
block = 'radial_ref carbon_brick'
grid_names = 'Tmod'
grid_variables = 'T_solid'
plus = true
isotopes = 'Graphite U235'
densities = '8.93263E-02 0.0'
material_id = 1
[]
# control_rod at 68% density
[control_rod]
type = CoupledFeedbackRoddedNeutronicsMaterial
block = 'cr'
grid_names = 'Tmod Tmod Tmod'
grid_variables = 'T_solid T_solid T_solid'
plus = true
#isotopes = ' Graphite U235 ; Graphite C12 B10 B11 U235; Graphite C12 B10 B11 U235'
#densities = '6.074191E-02 0.0 6.074191E-02 8.734066E-03 8.734066E-04 7.860660E-03 0.0 6.074191E-02 8.734066E-03 8.734066E-04 7.860660E-03 0.0'
isotopes = ' Graphite U235 ; Graphite B10 B11 C12 U235; Graphite B10 B11 C12 U235'
densities = ' 6.4277e-02 0.0 6.4277e-02 1.6373e-03 5.9938e-03 1.6004e-02 0.0 6.4277e-02 1.6373e-03 5.9938e-03 1.6004e-02 0.0'
segment_material_ids = '1 1 1'
rod_segment_length = 11.878
front_position_function = 'CR_bott'
rod_withdrawn_direction = 'y'
[]
# riser at 68% density
[riser]
type = CoupledFeedbackNeutronicsMaterial
block = 'riser'
grid_names = 'Tmod'
grid_variables = 'T_solid'
plus = true
isotopes = 'Graphite U235'
densities = '6.07419E-02 0.0'
material_id = 1
[]
[cavity]
type = ConstantNeutronicsMaterial
block = 'cavity'
fromFile = false
# computed from Serpent CMM
neutron_speed = '1.164872386937E+09 1.225755729920E+08 1.358941921623E+07 3.924789509810E+06 2.395847846182E+06 1.814298529894E+06 1.399342656828E+06 7.200528593684E+05 2.911858619061E+05'
diffusion_coef = '4.68857E-01 1.52760E-01 1.21025E-01 1.08241E-01 1.72433E-01 1.65906E-01 1.96579E-01 1.79868E-01 2.14727E-01'
sigma_r = '0 0 0 0 0 0 0 0 0'
sigma_s = ' 7.10949E-01 0 0 0 0 0 0 0 0
0 2.18207E+00 0 0 0 0 0 0 0
0 0 2.75425E+00 0 0 0 0 0 0
0 0 0 3.07955E+00 0 0 0 0 0
0 0 0 0 1.93312E+00 0 0 0 0
0 0 0 0 0 2.00917E+00 0 0 0
0 0 0 0 0 0 1.69567E+00 0 0
0 0 0 0 0 0 0 1.85321E+00 0
0 0 0 0 0 0 0 0 1.55236E+00'
diffusion_coefficient_scheme = user_supplied
[]
[]
[Compositions]
[fresh_pebble]
type = IsotopeComposition
density_type = atomic
isotope_densities = 'U234 1.0887E-07
U235 1.3550E-05
U238 1.4209E-04
O16 3.1137E-04
O17 1.1837E-07
Graphite 8.5357E-02
SI28 3.1399E-04
SI29 1.5944E-05
SI30 1.0510E-05
C12 3.4044E-04'
[]
[]
# ==============================================================================
# MultiApps & Transfers
# ==============================================================================
[MultiApps]
[flow]
type = TransientMultiApp
input_files = 'htr-pm-flow-fv-tr-dlofc.i'
positions = '0 0 0'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[power_density_to_flow]
type = MultiAppShapeEvaluationTransfer
to_multi_app = flow
source_variable = power_density
variable = power_density
execute_on = 'TIMESTEP_END'
[]
[T_solid_from_flow]
type = MultiAppNearestNodeTransfer
from_multi_app = flow
source_variable = T_solid
variable = T_solid
execute_on = 'TIMESTEP_END'
[]
[T_fluid_from_flow]
type = MultiAppNearestNodeTransfer
from_multi_app = flow
source_variable = T_fluid
variable = T_fluid
execute_on = 'TIMESTEP_END'
[]
[]
# ==============================================================================
# EXECUTION PARAMETERS
# ==============================================================================
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
# solver parameters
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart '
petsc_options_value = 'hypre boomeramg 100'
line_search = l2 #none
# Linear/nonlinear iterations.
l_max_its = 200
l_tol = 1e-3
nl_max_its = 50
nl_rel_tol = 1e-5
nl_abs_tol = 1e-6
fixed_point_max_its = 50
fixed_point_rel_tol = 1e-5
fixed_point_abs_tol = 1e-6
# time stepping
start_time = 0
end_time = 6.0e5
auto_advance = true
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.05
timestep_limiting_postprocessor = dt_max_pp
optimal_iterations = 10
iteration_window = 2
growth_factor = 2
cutback_factor = 0.5
[]
[]
# ==============================================================================
# POSTPROCESSORS DEBUG AND OUTPUTS
# ==============================================================================
[Outputs]
file_base = htr_pm_griffin_tr_dlofc_out
exodus = true
csv = true
perf_graph = true
execute_on = 'INITIAL FINAL TIMESTEP_END'
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[dt_max_pp]
type = FunctionValuePostprocessor
function = dt_max_fn
execute_on = TIMESTEP_BEGIN
[]
[max_T_solid]
type = ElementExtremeValue
variable = T_solid
execute_on = 'initial timestep_end'
[]
[Tsolid_core]
type = ElementAverageValue
variable = T_solid
execute_on = 'initial timestep_end'
[]
[Tfluid_core]
type = ElementAverageValue
variable = T_fluid
execute_on = 'initial timestep_end'
[]
[Tfuel_avg]
type = ElementAverageValue
block = 'pebble_bed'
variable = Tfuel_avg
execute_on = 'initial timestep_end'
[]
[Tfuel_max]
type = ElementExtremeValue
block = 'pebble_bed'
value_type = max
variable = Tfuel_avg
execute_on = 'initial timestep_end'
[]
[Tmod_avg]
type = ElementAverageValue
block = 'pebble_bed'
variable = Tmod_avg
execute_on = 'initial timestep_end'
[]
[Tmod_max]
type = ElementExtremeValue
block = 'pebble_bed'
variable = Tmod_max
value_type = max
execute_on = 'initial timestep_end'
[]
[UnscaledTotalPower]
type = FluxRxnIntegral
block = 'pebble_bed'
cross_section = kappa_sigma_fission
coupled_flux_groups = 'sflux_g0 sflux_g1 sflux_g2
sflux_g3 sflux_g4 sflux_g5
sflux_g6 sflux_g7 sflux_g8'
execute_on = 'initial'
[]
[prompt_power]
type = ElementIntegralVariablePostprocessor
block = 'pebble_bed'
variable = prompt_power_density
execute_on = 'initial timestep_end'
[]
[decay_heat]
type = ElementIntegralVariablePostprocessor
variable = total_pebble_decay_heat
block = 'pebble_bed'
execute_on = 'INITIAL TIMESTEP_END'
[]
[power_peak]
type = ElementExtremeValue
variable = power_peaking
value_type = max
execute_on = 'initial timestep_end'
[]
[]
(htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-tr-dlofc.i)
# ==============================================================================
# Model description
# ------------------------------------------------------------------------------
# DLOFC HTR-PM model
# Created & modifed by Sebastian Schunert, Mustafa Jaradat, April 11, 2023
# Updated by Guillaume Giudicelli, June 15th 2026
# ==============================================================================
# - htr-pm-FV: reference plant design based on 250MW HTR-PM plant.
# - FV using the new FV action
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Problem Parameters -----------------------------------------------------------
# Geometry ---------------------------------------------------------------------
pebble_diameter = 0.06 # Diameter of the pebbles (m).
pbed_top = 14.228 # TAF (m).
pbed_bottom = 3.228 # Bottom of bed (m).
pbed_r = 1.500 # Pebble Bed radius (m).
# Hydraulic diameter -----------------------------------------------------------
D_H_bypass = 0.15 # Hydraulic diameter of bypass
D_H_riser = 0.1875 # Hydraulic diameter of riser
D_H_top_reflector = 0.2 # Hydraulic diameter of the top reflector
D_H_bottom_reflector = 0.2 # Hydraulic diameter of the top reflector
D_H_top_cavity = 0.67 # Hydraulic diameter of the top cavity
# Properties -------------------------------------------------------------------
global_emissivity = 0.80 # All the materials has the same emissivity (//).
pebble_bed_porosity = 0.39 # Pebble bed porosity (//).
fluid_channels_porosity = 0.20 # 20% is assumed in regions where the He flows in graphite areas (//).
bypass_channel_porosity = 0.32 # Porosity in the bypass channel (see engineering calc in spreadsheet)
riser_porosity = 0.32 # Porosity in the riser channel (see engineering calc in spreadsheet)
top_reflector_porosity = 0.3 # Porosity of the top reflector
bottom_reflector_porosity = 0.3 # Porosity of the bottom reflector
# Operating conditions ---------------------------------------------------------
mfr = 96.0 # Total reactor He mass flow rate (kg/s).
T_inlet = 523.15 # Helium inlet temperature (K).
p_outlet = 7.0e+6 # Reactor outlet pressure (Pa)
T_exterior = 300.0 # External temperature (K)
reference_power = 250e6 # Reference power (W)
# Heat transfer area per volume ------------------------------------------------
C_DB = 0.023 # original Dittus Boelter constant for areal htc; modified by ApV
ApV_bypass = 8.521 # heat transfer area per volume bypass
ApV_riser = 6.927 # heat transfer area per volume riser
ApV_top_reflector = 5.737 # heat transfer area per volume top reflector
ApV_bottom_reflector = 5.737 # heat transfer area per volume bottom reflector
# volumetric heat transfer coefficient between solid
# fluid and solid in the fluid/solid regions except the
# bed; currently applied in top_reflector bottom_reflector hot_plenum cold_plenum
# TODO: use correlations here
alpha_fluid_solid = 5e3
## block definitions
# fluid blocks define fluid vars and solve for them
fluid_blocks = '1 2 3 4 5 6 61 71'
# solid blocks define T_solid and solve for it
solid_blocks = '1 2 3 5 6 7 8 10 12 61 71 9 11'
# friction scaling
scaling = 1 #0.05
[GlobalParams]
acceleration = '0.0 -9.81 0.0' # Gravity acceleration (m/s2).
fp = fluid_properties_obj
porosity = 'porosity'
pebble_diameter = ${pebble_diameter}
T_solid = T_solid
rhie_chow_user_object = pins_rhie_chow_interpolator
[]
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
[file]
type = FileMeshGenerator
# for single-physics simulation restart (as the parent app)
# file = 'htr-pm-flow-fv-ss_out.e'
# use_for_exodus_restart = true
# for multiphysics simulation restart (as a multiapp)
# We use the checkpoint to make sure to use the same partitioning
file = 'htr_pm_griffin_ss_out_flow0_cp/LATEST'
[]
coord_type = RZ
[]
# ==============================================================================
# Physics Equations
# ==============================================================================
[Physics]
[NavierStokes]
[Flow/all]
# exodus restart
# initialize_variables_from_mesh_file = true
# basic settings
block = ${fluid_blocks}
compressibility = 'weakly-compressible'
gravity = '0.0 -9.81 0.0'
# Variables, defined below for the Exodus restart
velocity_variable = 'superficial_vel_x superficial_vel_y'
pressure_variable = 'pressure'
# Porous treatement
porous_medium_treatment = true
friction_types = 'darcy forchheimer'
friction_coeffs = 'Darcy_coefficient Forchheimer_coefficient'
use_friction_correction = true
consistent_scaling = ${scaling}
porosity_smoothing_layers = 0
# fluid properties
density = 'rho'
dynamic_viscosity = 'mu'
# boundary conditions
inlet_boundaries = 'reactor_inlet'
momentum_inlet_types = 'flux-mass'
flux_inlet_pps = 'set_inlet_mfr'
flux_inlet_directions = '0 1 0'
outlet_boundaries = 'reactor_outlet'
momentum_outlet_types = 'fixed-pressure'
pressure_functors = 'pressure_out_fn'
wall_boundaries = 'pbed_inner pbed_outer hot_plenum_walls cold_plenum_walls riser_walls bypass_wall'
momentum_wall_types = 'symmetry slip slip slip slip slip'
# numerical parameters
pressure_face_interpolation = average
momentum_advection_interpolation = upwind
mass_advection_interpolation = upwind
# prevents solution jump on future restarts
time_derivative_contributes_to_RC_coefficients = false
[]
[FluidHeatTransfer/all]
# exodus restart
# initialize_variables_from_mesh_file = true
fluid_temperature_variable = 'T_fluid'
block = ${fluid_blocks}
# material properties
thermal_conductivity = 'kappa'
specific_heat = 'cp'
# convective heat transfer
ambient_convection_blocks = '1 2 3 5 6 61 71'
ambient_convection_alpha = 'alpha'
ambient_temperature = 'T_solid'
# boundary conditions
# see Flow physics for list of boundaries
energy_inlet_types = 'flux-mass'
energy_inlet_functors = '${T_inlet}'
energy_wall_types = 'heatflux heatflux heatflux heatflux heatflux heatflux'
energy_wall_functors = '0 0 0 0 0 0'
# numerical parameters
energy_advection_interpolation = upwind
energy_scaling = 5e-6
coupled_flow_physics = 'all'
system_names = 'nl0'
[]
[]
[]
[Variables]
[T_solid]
type = INSFVEnergyVariable
block = '${solid_blocks}'
# restart from exodus
# initial_from_file_var = T_solid
# initial_from_file_timestep = LATEST
[]
[]
[FVKernels]
[energy_storage]
type = PINSFVEnergyTimeDerivative
variable = T_solid
rho = rho_s
cp = cp_s
is_solid = true
[]
[solid_energy_diffusion_core]
type = PINSFVEnergyAnisotropicDiffusion
variable = T_solid
kappa = 'effective_thermal_conductivity'
effective_diffusivity = true
# porosity won't be used because effective_diffusivity = true
# so set it to 1
porosity = 1
[]
[convection_pebble_bed_fluid]
type = PINSFVEnergyAmbientConvection
variable = T_solid
T_fluid = T_fluid
T_solid = T_solid
is_solid = true
h_solid_fluid = alpha
block = 'pebble_bed top_reflector
bottom_reflector hot_plenum
cold_plenum riser bypass'
[]
[heat_source]
type = FVCoupledForce
variable = T_solid
v = power_density
block = 'pebble_bed'
[]
[]
[FVBCs]
[radiation]
type = FVInfiniteCylinderRadiativeBC
variable = T_solid
boundary = right
temperature = T_solid
Tinfinity = ${T_exterior}
boundary_radius = 3.0
boundary_emissivity = ${global_emissivity}
cylinder_radius = 4.0
cylinder_emissivity = ${global_emissivity}
[]
[convection]
type = FVThermalResistanceBC
variable = T_solid
htc = natural_htc
T_ambient = ${T_exterior}
emissivity = 0
thermal_conductivities = '0.025'
conduction_thicknesses = '1'
boundary = right
[]
[]
# ==============================================================================
# DLOFC transient specifications
# ==============================================================================
[AuxVariables]
[power_density]
type = MooseVariableFVReal
block = 'pebble_bed'
# restart from exodus
# initial_from_file_var = power_density
# initial_from_file_timestep = LATEST
[]
[]
[Functions]
# viscosity was ramped in equilibrium calculation
[mu_ramp_fn]
type = PiecewiseLinear
x = '0 1 1e+7'
y = '1 1 1'
[]
# DLOFC transient
[mfr_fn]
type = PiecewiseLinear
x = ' 0 1 13'
y = ' ${mfr} ${mfr} 0.0'
[]
[pressure_out_fn]
type = PiecewiseLinear
x = ' 0 1 13'
y = '${p_outlet} ${p_outlet} 101325.0'
[]
# increase time steps as transient slows down
[dt_max_fn]
type = PiecewiseLinear
x = '-10 0 16 30 1000 5000 20000 100000 200000 500000'
y = ' 1 1 1 1 50 100 200 400 400 500'
[]
[]
[Postprocessors]
[set_inlet_mfr]
type = FunctionValuePostprocessor
function = 'mfr_fn'
execute_on = TIMESTEP_BEGIN
[]
[dt_max_pp]
type = FunctionValuePostprocessor
function = dt_max_fn
execute_on = TIMESTEP_BEGIN
[]
[]
# ==============================================================================
# Materials and closure models
# ==============================================================================
!include htr-pm-flow-fv_materials.i
# ==============================================================================
# Solver parameters
# ==============================================================================
[Executioner]
type = Transient
# solver parameters
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart -pc_factor_shift_type -mat_mumps_icntl_20'
petsc_options_value = 'lu mumps 100 NONZERO 0'
automatic_scaling = true
nl_abs_tol = 1e-5
line_search = l2
nl_max_its = 50
# time stepping
start_time = 0
end_time = 5.0e+05
[TimeStepper]
type = IterationAdaptiveDT
dt = 1
timestep_limiting_postprocessor = dt_max_pp
optimal_iterations = 10
iteration_window = 2
growth_factor = 2
cutback_factor = 0.5
[]
[]
# ==============================================================================
# Outputs and postprocessing
# ==============================================================================
[Outputs]
csv = true
exodus = true
[console]
type = Console
# hide some trivial postprocessors, and the balance which we don't run long
# enough to establish
hide = 'area_pp_reactor_inlet set_inlet_mfr total_balance_percent advection_energy_balance'
[]
print_linear_converged_reason = false
print_linear_residuals = false
print_nonlinear_converged_reason = false
[]
!include htr-pm-flow-fv_postprocessing.i
(htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-tr-dlofc.i)
# ==============================================================================
# Model description
# ------------------------------------------------------------------------------
# DLOFC HTR-PM model
# Created & modifed by Sebastian Schunert, Mustafa Jaradat, April 11, 2023
# Updated by Guillaume Giudicelli, June 15th 2026
# ==============================================================================
# - htr-pm-FV: reference plant design based on 250MW HTR-PM plant.
# - FV using the new FV action
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Problem Parameters -----------------------------------------------------------
# Geometry ---------------------------------------------------------------------
pebble_diameter = 0.06 # Diameter of the pebbles (m).
pbed_top = 14.228 # TAF (m).
pbed_bottom = 3.228 # Bottom of bed (m).
pbed_r = 1.500 # Pebble Bed radius (m).
# Hydraulic diameter -----------------------------------------------------------
D_H_bypass = 0.15 # Hydraulic diameter of bypass
D_H_riser = 0.1875 # Hydraulic diameter of riser
D_H_top_reflector = 0.2 # Hydraulic diameter of the top reflector
D_H_bottom_reflector = 0.2 # Hydraulic diameter of the top reflector
D_H_top_cavity = 0.67 # Hydraulic diameter of the top cavity
# Properties -------------------------------------------------------------------
global_emissivity = 0.80 # All the materials has the same emissivity (//).
pebble_bed_porosity = 0.39 # Pebble bed porosity (//).
fluid_channels_porosity = 0.20 # 20% is assumed in regions where the He flows in graphite areas (//).
bypass_channel_porosity = 0.32 # Porosity in the bypass channel (see engineering calc in spreadsheet)
riser_porosity = 0.32 # Porosity in the riser channel (see engineering calc in spreadsheet)
top_reflector_porosity = 0.3 # Porosity of the top reflector
bottom_reflector_porosity = 0.3 # Porosity of the bottom reflector
# Operating conditions ---------------------------------------------------------
mfr = 96.0 # Total reactor He mass flow rate (kg/s).
T_inlet = 523.15 # Helium inlet temperature (K).
p_outlet = 7.0e+6 # Reactor outlet pressure (Pa)
T_exterior = 300.0 # External temperature (K)
reference_power = 250e6 # Reference power (W)
# Heat transfer area per volume ------------------------------------------------
C_DB = 0.023 # original Dittus Boelter constant for areal htc; modified by ApV
ApV_bypass = 8.521 # heat transfer area per volume bypass
ApV_riser = 6.927 # heat transfer area per volume riser
ApV_top_reflector = 5.737 # heat transfer area per volume top reflector
ApV_bottom_reflector = 5.737 # heat transfer area per volume bottom reflector
# volumetric heat transfer coefficient between solid
# fluid and solid in the fluid/solid regions except the
# bed; currently applied in top_reflector bottom_reflector hot_plenum cold_plenum
# TODO: use correlations here
alpha_fluid_solid = 5e3
## block definitions
# fluid blocks define fluid vars and solve for them
fluid_blocks = '1 2 3 4 5 6 61 71'
# solid blocks define T_solid and solve for it
solid_blocks = '1 2 3 5 6 7 8 10 12 61 71 9 11'
# friction scaling
scaling = 1 #0.05
[GlobalParams]
acceleration = '0.0 -9.81 0.0' # Gravity acceleration (m/s2).
fp = fluid_properties_obj
porosity = 'porosity'
pebble_diameter = ${pebble_diameter}
T_solid = T_solid
rhie_chow_user_object = pins_rhie_chow_interpolator
[]
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
[file]
type = FileMeshGenerator
# for single-physics simulation restart (as the parent app)
# file = 'htr-pm-flow-fv-ss_out.e'
# use_for_exodus_restart = true
# for multiphysics simulation restart (as a multiapp)
# We use the checkpoint to make sure to use the same partitioning
file = 'htr_pm_griffin_ss_out_flow0_cp/LATEST'
[]
coord_type = RZ
[]
# ==============================================================================
# Physics Equations
# ==============================================================================
[Physics]
[NavierStokes]
[Flow/all]
# exodus restart
# initialize_variables_from_mesh_file = true
# basic settings
block = ${fluid_blocks}
compressibility = 'weakly-compressible'
gravity = '0.0 -9.81 0.0'
# Variables, defined below for the Exodus restart
velocity_variable = 'superficial_vel_x superficial_vel_y'
pressure_variable = 'pressure'
# Porous treatement
porous_medium_treatment = true
friction_types = 'darcy forchheimer'
friction_coeffs = 'Darcy_coefficient Forchheimer_coefficient'
use_friction_correction = true
consistent_scaling = ${scaling}
porosity_smoothing_layers = 0
# fluid properties
density = 'rho'
dynamic_viscosity = 'mu'
# boundary conditions
inlet_boundaries = 'reactor_inlet'
momentum_inlet_types = 'flux-mass'
flux_inlet_pps = 'set_inlet_mfr'
flux_inlet_directions = '0 1 0'
outlet_boundaries = 'reactor_outlet'
momentum_outlet_types = 'fixed-pressure'
pressure_functors = 'pressure_out_fn'
wall_boundaries = 'pbed_inner pbed_outer hot_plenum_walls cold_plenum_walls riser_walls bypass_wall'
momentum_wall_types = 'symmetry slip slip slip slip slip'
# numerical parameters
pressure_face_interpolation = average
momentum_advection_interpolation = upwind
mass_advection_interpolation = upwind
# prevents solution jump on future restarts
time_derivative_contributes_to_RC_coefficients = false
[]
[FluidHeatTransfer/all]
# exodus restart
# initialize_variables_from_mesh_file = true
fluid_temperature_variable = 'T_fluid'
block = ${fluid_blocks}
# material properties
thermal_conductivity = 'kappa'
specific_heat = 'cp'
# convective heat transfer
ambient_convection_blocks = '1 2 3 5 6 61 71'
ambient_convection_alpha = 'alpha'
ambient_temperature = 'T_solid'
# boundary conditions
# see Flow physics for list of boundaries
energy_inlet_types = 'flux-mass'
energy_inlet_functors = '${T_inlet}'
energy_wall_types = 'heatflux heatflux heatflux heatflux heatflux heatflux'
energy_wall_functors = '0 0 0 0 0 0'
# numerical parameters
energy_advection_interpolation = upwind
energy_scaling = 5e-6
coupled_flow_physics = 'all'
system_names = 'nl0'
[]
[]
[]
[Variables]
[T_solid]
type = INSFVEnergyVariable
block = '${solid_blocks}'
# restart from exodus
# initial_from_file_var = T_solid
# initial_from_file_timestep = LATEST
[]
[]
[FVKernels]
[energy_storage]
type = PINSFVEnergyTimeDerivative
variable = T_solid
rho = rho_s
cp = cp_s
is_solid = true
[]
[solid_energy_diffusion_core]
type = PINSFVEnergyAnisotropicDiffusion
variable = T_solid
kappa = 'effective_thermal_conductivity'
effective_diffusivity = true
# porosity won't be used because effective_diffusivity = true
# so set it to 1
porosity = 1
[]
[convection_pebble_bed_fluid]
type = PINSFVEnergyAmbientConvection
variable = T_solid
T_fluid = T_fluid
T_solid = T_solid
is_solid = true
h_solid_fluid = alpha
block = 'pebble_bed top_reflector
bottom_reflector hot_plenum
cold_plenum riser bypass'
[]
[heat_source]
type = FVCoupledForce
variable = T_solid
v = power_density
block = 'pebble_bed'
[]
[]
[FVBCs]
[radiation]
type = FVInfiniteCylinderRadiativeBC
variable = T_solid
boundary = right
temperature = T_solid
Tinfinity = ${T_exterior}
boundary_radius = 3.0
boundary_emissivity = ${global_emissivity}
cylinder_radius = 4.0
cylinder_emissivity = ${global_emissivity}
[]
[convection]
type = FVThermalResistanceBC
variable = T_solid
htc = natural_htc
T_ambient = ${T_exterior}
emissivity = 0
thermal_conductivities = '0.025'
conduction_thicknesses = '1'
boundary = right
[]
[]
# ==============================================================================
# DLOFC transient specifications
# ==============================================================================
[AuxVariables]
[power_density]
type = MooseVariableFVReal
block = 'pebble_bed'
# restart from exodus
# initial_from_file_var = power_density
# initial_from_file_timestep = LATEST
[]
[]
[Functions]
# viscosity was ramped in equilibrium calculation
[mu_ramp_fn]
type = PiecewiseLinear
x = '0 1 1e+7'
y = '1 1 1'
[]
# DLOFC transient
[mfr_fn]
type = PiecewiseLinear
x = ' 0 1 13'
y = ' ${mfr} ${mfr} 0.0'
[]
[pressure_out_fn]
type = PiecewiseLinear
x = ' 0 1 13'
y = '${p_outlet} ${p_outlet} 101325.0'
[]
# increase time steps as transient slows down
[dt_max_fn]
type = PiecewiseLinear
x = '-10 0 16 30 1000 5000 20000 100000 200000 500000'
y = ' 1 1 1 1 50 100 200 400 400 500'
[]
[]
[Postprocessors]
[set_inlet_mfr]
type = FunctionValuePostprocessor
function = 'mfr_fn'
execute_on = TIMESTEP_BEGIN
[]
[dt_max_pp]
type = FunctionValuePostprocessor
function = dt_max_fn
execute_on = TIMESTEP_BEGIN
[]
[]
# ==============================================================================
# Materials and closure models
# ==============================================================================
!include htr-pm-flow-fv_materials.i
# ==============================================================================
# Solver parameters
# ==============================================================================
[Executioner]
type = Transient
# solver parameters
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart -pc_factor_shift_type -mat_mumps_icntl_20'
petsc_options_value = 'lu mumps 100 NONZERO 0'
automatic_scaling = true
nl_abs_tol = 1e-5
line_search = l2
nl_max_its = 50
# time stepping
start_time = 0
end_time = 5.0e+05
[TimeStepper]
type = IterationAdaptiveDT
dt = 1
timestep_limiting_postprocessor = dt_max_pp
optimal_iterations = 10
iteration_window = 2
growth_factor = 2
cutback_factor = 0.5
[]
[]
# ==============================================================================
# Outputs and postprocessing
# ==============================================================================
[Outputs]
csv = true
exodus = true
[console]
type = Console
# hide some trivial postprocessors, and the balance which we don't run long
# enough to establish
hide = 'area_pp_reactor_inlet set_inlet_mfr total_balance_percent advection_energy_balance'
[]
print_linear_converged_reason = false
print_linear_residuals = false
print_nonlinear_converged_reason = false
[]
!include htr-pm-flow-fv_postprocessing.i
(htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-tr-dlofc.i)
# ==============================================================================
# Model description
# ------------------------------------------------------------------------------
# DLOFC HTR-PM model
# Created & modifed by Sebastian Schunert, Mustafa Jaradat, April 11, 2023
# Updated by Guillaume Giudicelli, June 15th 2026
# ==============================================================================
# - htr-pm-FV: reference plant design based on 250MW HTR-PM plant.
# - FV using the new FV action
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Problem Parameters -----------------------------------------------------------
# Geometry ---------------------------------------------------------------------
pebble_diameter = 0.06 # Diameter of the pebbles (m).
pbed_top = 14.228 # TAF (m).
pbed_bottom = 3.228 # Bottom of bed (m).
pbed_r = 1.500 # Pebble Bed radius (m).
# Hydraulic diameter -----------------------------------------------------------
D_H_bypass = 0.15 # Hydraulic diameter of bypass
D_H_riser = 0.1875 # Hydraulic diameter of riser
D_H_top_reflector = 0.2 # Hydraulic diameter of the top reflector
D_H_bottom_reflector = 0.2 # Hydraulic diameter of the top reflector
D_H_top_cavity = 0.67 # Hydraulic diameter of the top cavity
# Properties -------------------------------------------------------------------
global_emissivity = 0.80 # All the materials has the same emissivity (//).
pebble_bed_porosity = 0.39 # Pebble bed porosity (//).
fluid_channels_porosity = 0.20 # 20% is assumed in regions where the He flows in graphite areas (//).
bypass_channel_porosity = 0.32 # Porosity in the bypass channel (see engineering calc in spreadsheet)
riser_porosity = 0.32 # Porosity in the riser channel (see engineering calc in spreadsheet)
top_reflector_porosity = 0.3 # Porosity of the top reflector
bottom_reflector_porosity = 0.3 # Porosity of the bottom reflector
# Operating conditions ---------------------------------------------------------
mfr = 96.0 # Total reactor He mass flow rate (kg/s).
T_inlet = 523.15 # Helium inlet temperature (K).
p_outlet = 7.0e+6 # Reactor outlet pressure (Pa)
T_exterior = 300.0 # External temperature (K)
reference_power = 250e6 # Reference power (W)
# Heat transfer area per volume ------------------------------------------------
C_DB = 0.023 # original Dittus Boelter constant for areal htc; modified by ApV
ApV_bypass = 8.521 # heat transfer area per volume bypass
ApV_riser = 6.927 # heat transfer area per volume riser
ApV_top_reflector = 5.737 # heat transfer area per volume top reflector
ApV_bottom_reflector = 5.737 # heat transfer area per volume bottom reflector
# volumetric heat transfer coefficient between solid
# fluid and solid in the fluid/solid regions except the
# bed; currently applied in top_reflector bottom_reflector hot_plenum cold_plenum
# TODO: use correlations here
alpha_fluid_solid = 5e3
## block definitions
# fluid blocks define fluid vars and solve for them
fluid_blocks = '1 2 3 4 5 6 61 71'
# solid blocks define T_solid and solve for it
solid_blocks = '1 2 3 5 6 7 8 10 12 61 71 9 11'
# friction scaling
scaling = 1 #0.05
[GlobalParams]
acceleration = '0.0 -9.81 0.0' # Gravity acceleration (m/s2).
fp = fluid_properties_obj
porosity = 'porosity'
pebble_diameter = ${pebble_diameter}
T_solid = T_solid
rhie_chow_user_object = pins_rhie_chow_interpolator
[]
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
[file]
type = FileMeshGenerator
# for single-physics simulation restart (as the parent app)
# file = 'htr-pm-flow-fv-ss_out.e'
# use_for_exodus_restart = true
# for multiphysics simulation restart (as a multiapp)
# We use the checkpoint to make sure to use the same partitioning
file = 'htr_pm_griffin_ss_out_flow0_cp/LATEST'
[]
coord_type = RZ
[]
# ==============================================================================
# Physics Equations
# ==============================================================================
[Physics]
[NavierStokes]
[Flow/all]
# exodus restart
# initialize_variables_from_mesh_file = true
# basic settings
block = ${fluid_blocks}
compressibility = 'weakly-compressible'
gravity = '0.0 -9.81 0.0'
# Variables, defined below for the Exodus restart
velocity_variable = 'superficial_vel_x superficial_vel_y'
pressure_variable = 'pressure'
# Porous treatement
porous_medium_treatment = true
friction_types = 'darcy forchheimer'
friction_coeffs = 'Darcy_coefficient Forchheimer_coefficient'
use_friction_correction = true
consistent_scaling = ${scaling}
porosity_smoothing_layers = 0
# fluid properties
density = 'rho'
dynamic_viscosity = 'mu'
# boundary conditions
inlet_boundaries = 'reactor_inlet'
momentum_inlet_types = 'flux-mass'
flux_inlet_pps = 'set_inlet_mfr'
flux_inlet_directions = '0 1 0'
outlet_boundaries = 'reactor_outlet'
momentum_outlet_types = 'fixed-pressure'
pressure_functors = 'pressure_out_fn'
wall_boundaries = 'pbed_inner pbed_outer hot_plenum_walls cold_plenum_walls riser_walls bypass_wall'
momentum_wall_types = 'symmetry slip slip slip slip slip'
# numerical parameters
pressure_face_interpolation = average
momentum_advection_interpolation = upwind
mass_advection_interpolation = upwind
# prevents solution jump on future restarts
time_derivative_contributes_to_RC_coefficients = false
[]
[FluidHeatTransfer/all]
# exodus restart
# initialize_variables_from_mesh_file = true
fluid_temperature_variable = 'T_fluid'
block = ${fluid_blocks}
# material properties
thermal_conductivity = 'kappa'
specific_heat = 'cp'
# convective heat transfer
ambient_convection_blocks = '1 2 3 5 6 61 71'
ambient_convection_alpha = 'alpha'
ambient_temperature = 'T_solid'
# boundary conditions
# see Flow physics for list of boundaries
energy_inlet_types = 'flux-mass'
energy_inlet_functors = '${T_inlet}'
energy_wall_types = 'heatflux heatflux heatflux heatflux heatflux heatflux'
energy_wall_functors = '0 0 0 0 0 0'
# numerical parameters
energy_advection_interpolation = upwind
energy_scaling = 5e-6
coupled_flow_physics = 'all'
system_names = 'nl0'
[]
[]
[]
[Variables]
[T_solid]
type = INSFVEnergyVariable
block = '${solid_blocks}'
# restart from exodus
# initial_from_file_var = T_solid
# initial_from_file_timestep = LATEST
[]
[]
[FVKernels]
[energy_storage]
type = PINSFVEnergyTimeDerivative
variable = T_solid
rho = rho_s
cp = cp_s
is_solid = true
[]
[solid_energy_diffusion_core]
type = PINSFVEnergyAnisotropicDiffusion
variable = T_solid
kappa = 'effective_thermal_conductivity'
effective_diffusivity = true
# porosity won't be used because effective_diffusivity = true
# so set it to 1
porosity = 1
[]
[convection_pebble_bed_fluid]
type = PINSFVEnergyAmbientConvection
variable = T_solid
T_fluid = T_fluid
T_solid = T_solid
is_solid = true
h_solid_fluid = alpha
block = 'pebble_bed top_reflector
bottom_reflector hot_plenum
cold_plenum riser bypass'
[]
[heat_source]
type = FVCoupledForce
variable = T_solid
v = power_density
block = 'pebble_bed'
[]
[]
[FVBCs]
[radiation]
type = FVInfiniteCylinderRadiativeBC
variable = T_solid
boundary = right
temperature = T_solid
Tinfinity = ${T_exterior}
boundary_radius = 3.0
boundary_emissivity = ${global_emissivity}
cylinder_radius = 4.0
cylinder_emissivity = ${global_emissivity}
[]
[convection]
type = FVThermalResistanceBC
variable = T_solid
htc = natural_htc
T_ambient = ${T_exterior}
emissivity = 0
thermal_conductivities = '0.025'
conduction_thicknesses = '1'
boundary = right
[]
[]
# ==============================================================================
# DLOFC transient specifications
# ==============================================================================
[AuxVariables]
[power_density]
type = MooseVariableFVReal
block = 'pebble_bed'
# restart from exodus
# initial_from_file_var = power_density
# initial_from_file_timestep = LATEST
[]
[]
[Functions]
# viscosity was ramped in equilibrium calculation
[mu_ramp_fn]
type = PiecewiseLinear
x = '0 1 1e+7'
y = '1 1 1'
[]
# DLOFC transient
[mfr_fn]
type = PiecewiseLinear
x = ' 0 1 13'
y = ' ${mfr} ${mfr} 0.0'
[]
[pressure_out_fn]
type = PiecewiseLinear
x = ' 0 1 13'
y = '${p_outlet} ${p_outlet} 101325.0'
[]
# increase time steps as transient slows down
[dt_max_fn]
type = PiecewiseLinear
x = '-10 0 16 30 1000 5000 20000 100000 200000 500000'
y = ' 1 1 1 1 50 100 200 400 400 500'
[]
[]
[Postprocessors]
[set_inlet_mfr]
type = FunctionValuePostprocessor
function = 'mfr_fn'
execute_on = TIMESTEP_BEGIN
[]
[dt_max_pp]
type = FunctionValuePostprocessor
function = dt_max_fn
execute_on = TIMESTEP_BEGIN
[]
[]
# ==============================================================================
# Materials and closure models
# ==============================================================================
!include htr-pm-flow-fv_materials.i
# ==============================================================================
# Solver parameters
# ==============================================================================
[Executioner]
type = Transient
# solver parameters
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart -pc_factor_shift_type -mat_mumps_icntl_20'
petsc_options_value = 'lu mumps 100 NONZERO 0'
automatic_scaling = true
nl_abs_tol = 1e-5
line_search = l2
nl_max_its = 50
# time stepping
start_time = 0
end_time = 5.0e+05
[TimeStepper]
type = IterationAdaptiveDT
dt = 1
timestep_limiting_postprocessor = dt_max_pp
optimal_iterations = 10
iteration_window = 2
growth_factor = 2
cutback_factor = 0.5
[]
[]
# ==============================================================================
# Outputs and postprocessing
# ==============================================================================
[Outputs]
csv = true
exodus = true
[console]
type = Console
# hide some trivial postprocessors, and the balance which we don't run long
# enough to establish
hide = 'area_pp_reactor_inlet set_inlet_mfr total_balance_percent advection_energy_balance'
[]
print_linear_converged_reason = false
print_linear_residuals = false
print_nonlinear_converged_reason = false
[]
!include htr-pm-flow-fv_postprocessing.i
(htgr/htr-pm/core-multiphysics/updated_equilibrium_core/htr-pm-flow-fv-tr-dlofc.i)
# ==============================================================================
# Model description
# ------------------------------------------------------------------------------
# DLOFC HTR-PM model
# Created & modifed by Sebastian Schunert, Mustafa Jaradat, April 11, 2023
# Updated by Guillaume Giudicelli, June 15th 2026
# ==============================================================================
# - htr-pm-FV: reference plant design based on 250MW HTR-PM plant.
# - FV using the new FV action
# ==============================================================================
# MODEL PARAMETERS
# ==============================================================================
# Problem Parameters -----------------------------------------------------------
# Geometry ---------------------------------------------------------------------
pebble_diameter = 0.06 # Diameter of the pebbles (m).
pbed_top = 14.228 # TAF (m).
pbed_bottom = 3.228 # Bottom of bed (m).
pbed_r = 1.500 # Pebble Bed radius (m).
# Hydraulic diameter -----------------------------------------------------------
D_H_bypass = 0.15 # Hydraulic diameter of bypass
D_H_riser = 0.1875 # Hydraulic diameter of riser
D_H_top_reflector = 0.2 # Hydraulic diameter of the top reflector
D_H_bottom_reflector = 0.2 # Hydraulic diameter of the top reflector
D_H_top_cavity = 0.67 # Hydraulic diameter of the top cavity
# Properties -------------------------------------------------------------------
global_emissivity = 0.80 # All the materials has the same emissivity (//).
pebble_bed_porosity = 0.39 # Pebble bed porosity (//).
fluid_channels_porosity = 0.20 # 20% is assumed in regions where the He flows in graphite areas (//).
bypass_channel_porosity = 0.32 # Porosity in the bypass channel (see engineering calc in spreadsheet)
riser_porosity = 0.32 # Porosity in the riser channel (see engineering calc in spreadsheet)
top_reflector_porosity = 0.3 # Porosity of the top reflector
bottom_reflector_porosity = 0.3 # Porosity of the bottom reflector
# Operating conditions ---------------------------------------------------------
mfr = 96.0 # Total reactor He mass flow rate (kg/s).
T_inlet = 523.15 # Helium inlet temperature (K).
p_outlet = 7.0e+6 # Reactor outlet pressure (Pa)
T_exterior = 300.0 # External temperature (K)
reference_power = 250e6 # Reference power (W)
# Heat transfer area per volume ------------------------------------------------
C_DB = 0.023 # original Dittus Boelter constant for areal htc; modified by ApV
ApV_bypass = 8.521 # heat transfer area per volume bypass
ApV_riser = 6.927 # heat transfer area per volume riser
ApV_top_reflector = 5.737 # heat transfer area per volume top reflector
ApV_bottom_reflector = 5.737 # heat transfer area per volume bottom reflector
# volumetric heat transfer coefficient between solid
# fluid and solid in the fluid/solid regions except the
# bed; currently applied in top_reflector bottom_reflector hot_plenum cold_plenum
# TODO: use correlations here
alpha_fluid_solid = 5e3
## block definitions
# fluid blocks define fluid vars and solve for them
fluid_blocks = '1 2 3 4 5 6 61 71'
# solid blocks define T_solid and solve for it
solid_blocks = '1 2 3 5 6 7 8 10 12 61 71 9 11'
# friction scaling
scaling = 1 #0.05
[GlobalParams]
acceleration = '0.0 -9.81 0.0' # Gravity acceleration (m/s2).
fp = fluid_properties_obj
porosity = 'porosity'
pebble_diameter = ${pebble_diameter}
T_solid = T_solid
rhie_chow_user_object = pins_rhie_chow_interpolator
[]
# ==============================================================================
# GEOMETRY AND MESH
# ==============================================================================
[Mesh]
[file]
type = FileMeshGenerator
# for single-physics simulation restart (as the parent app)
# file = 'htr-pm-flow-fv-ss_out.e'
# use_for_exodus_restart = true
# for multiphysics simulation restart (as a multiapp)
# We use the checkpoint to make sure to use the same partitioning
file = 'htr_pm_griffin_ss_out_flow0_cp/LATEST'
[]
coord_type = RZ
[]
# ==============================================================================
# Physics Equations
# ==============================================================================
[Physics]
[NavierStokes]
[Flow/all]
# exodus restart
# initialize_variables_from_mesh_file = true
# basic settings
block = ${fluid_blocks}
compressibility = 'weakly-compressible'
gravity = '0.0 -9.81 0.0'
# Variables, defined below for the Exodus restart
velocity_variable = 'superficial_vel_x superficial_vel_y'
pressure_variable = 'pressure'
# Porous treatement
porous_medium_treatment = true
friction_types = 'darcy forchheimer'
friction_coeffs = 'Darcy_coefficient Forchheimer_coefficient'
use_friction_correction = true
consistent_scaling = ${scaling}
porosity_smoothing_layers = 0
# fluid properties
density = 'rho'
dynamic_viscosity = 'mu'
# boundary conditions
inlet_boundaries = 'reactor_inlet'
momentum_inlet_types = 'flux-mass'
flux_inlet_pps = 'set_inlet_mfr'
flux_inlet_directions = '0 1 0'
outlet_boundaries = 'reactor_outlet'
momentum_outlet_types = 'fixed-pressure'
pressure_functors = 'pressure_out_fn'
wall_boundaries = 'pbed_inner pbed_outer hot_plenum_walls cold_plenum_walls riser_walls bypass_wall'
momentum_wall_types = 'symmetry slip slip slip slip slip'
# numerical parameters
pressure_face_interpolation = average
momentum_advection_interpolation = upwind
mass_advection_interpolation = upwind
# prevents solution jump on future restarts
time_derivative_contributes_to_RC_coefficients = false
[]
[FluidHeatTransfer/all]
# exodus restart
# initialize_variables_from_mesh_file = true
fluid_temperature_variable = 'T_fluid'
block = ${fluid_blocks}
# material properties
thermal_conductivity = 'kappa'
specific_heat = 'cp'
# convective heat transfer
ambient_convection_blocks = '1 2 3 5 6 61 71'
ambient_convection_alpha = 'alpha'
ambient_temperature = 'T_solid'
# boundary conditions
# see Flow physics for list of boundaries
energy_inlet_types = 'flux-mass'
energy_inlet_functors = '${T_inlet}'
energy_wall_types = 'heatflux heatflux heatflux heatflux heatflux heatflux'
energy_wall_functors = '0 0 0 0 0 0'
# numerical parameters
energy_advection_interpolation = upwind
energy_scaling = 5e-6
coupled_flow_physics = 'all'
system_names = 'nl0'
[]
[]
[]
[Variables]
[T_solid]
type = INSFVEnergyVariable
block = '${solid_blocks}'
# restart from exodus
# initial_from_file_var = T_solid
# initial_from_file_timestep = LATEST
[]
[]
[FVKernels]
[energy_storage]
type = PINSFVEnergyTimeDerivative
variable = T_solid
rho = rho_s
cp = cp_s
is_solid = true
[]
[solid_energy_diffusion_core]
type = PINSFVEnergyAnisotropicDiffusion
variable = T_solid
kappa = 'effective_thermal_conductivity'
effective_diffusivity = true
# porosity won't be used because effective_diffusivity = true
# so set it to 1
porosity = 1
[]
[convection_pebble_bed_fluid]
type = PINSFVEnergyAmbientConvection
variable = T_solid
T_fluid = T_fluid
T_solid = T_solid
is_solid = true
h_solid_fluid = alpha
block = 'pebble_bed top_reflector
bottom_reflector hot_plenum
cold_plenum riser bypass'
[]
[heat_source]
type = FVCoupledForce
variable = T_solid
v = power_density
block = 'pebble_bed'
[]
[]
[FVBCs]
[radiation]
type = FVInfiniteCylinderRadiativeBC
variable = T_solid
boundary = right
temperature = T_solid
Tinfinity = ${T_exterior}
boundary_radius = 3.0
boundary_emissivity = ${global_emissivity}
cylinder_radius = 4.0
cylinder_emissivity = ${global_emissivity}
[]
[convection]
type = FVThermalResistanceBC
variable = T_solid
htc = natural_htc
T_ambient = ${T_exterior}
emissivity = 0
thermal_conductivities = '0.025'
conduction_thicknesses = '1'
boundary = right
[]
[]
# ==============================================================================
# DLOFC transient specifications
# ==============================================================================
[AuxVariables]
[power_density]
type = MooseVariableFVReal
block = 'pebble_bed'
# restart from exodus
# initial_from_file_var = power_density
# initial_from_file_timestep = LATEST
[]
[]
[Functions]
# viscosity was ramped in equilibrium calculation
[mu_ramp_fn]
type = PiecewiseLinear
x = '0 1 1e+7'
y = '1 1 1'
[]
# DLOFC transient
[mfr_fn]
type = PiecewiseLinear
x = ' 0 1 13'
y = ' ${mfr} ${mfr} 0.0'
[]
[pressure_out_fn]
type = PiecewiseLinear
x = ' 0 1 13'
y = '${p_outlet} ${p_outlet} 101325.0'
[]
# increase time steps as transient slows down
[dt_max_fn]
type = PiecewiseLinear
x = '-10 0 16 30 1000 5000 20000 100000 200000 500000'
y = ' 1 1 1 1 50 100 200 400 400 500'
[]
[]
[Postprocessors]
[set_inlet_mfr]
type = FunctionValuePostprocessor
function = 'mfr_fn'
execute_on = TIMESTEP_BEGIN
[]
[dt_max_pp]
type = FunctionValuePostprocessor
function = dt_max_fn
execute_on = TIMESTEP_BEGIN
[]
[]
# ==============================================================================
# Materials and closure models
# ==============================================================================
!include htr-pm-flow-fv_materials.i
# ==============================================================================
# Solver parameters
# ==============================================================================
[Executioner]
type = Transient
# solver parameters
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart -pc_factor_shift_type -mat_mumps_icntl_20'
petsc_options_value = 'lu mumps 100 NONZERO 0'
automatic_scaling = true
nl_abs_tol = 1e-5
line_search = l2
nl_max_its = 50
# time stepping
start_time = 0
end_time = 5.0e+05
[TimeStepper]
type = IterationAdaptiveDT
dt = 1
timestep_limiting_postprocessor = dt_max_pp
optimal_iterations = 10
iteration_window = 2
growth_factor = 2
cutback_factor = 0.5
[]
[]
# ==============================================================================
# Outputs and postprocessing
# ==============================================================================
[Outputs]
csv = true
exodus = true
[console]
type = Console
# hide some trivial postprocessors, and the balance which we don't run long
# enough to establish
hide = 'area_pp_reactor_inlet set_inlet_mfr total_balance_percent advection_energy_balance'
[]
print_linear_converged_reason = false
print_linear_residuals = false
print_nonlinear_converged_reason = false
[]
!include htr-pm-flow-fv_postprocessing.i