Multiphysics Models

Point of Contact: Soon Lee (soon.lee.at.anl.gov)

Primary Contributors: Nicholas Fassino, Soon Lee, Yinbin Miao, Kun Mo, Nicolas Stauff

Model link: HPMR TRISO failure Model

commentnote:Acknowledgement

This HP-MR model was built upon earlier work performed under ARPA-E MEITNER project and reported in the journal paper (Matthews et al., 2021), and some parts of the inputs are coming from these original models. The TRISO failure analysis BISON input files were adapted from inputs available in the BISON repository and reported in (Jiang et al., 2021).

TRISO Failure Model Description

The HP-MR TRISO fuel particle model used in this exercise is a one-dimensional simplification of the model detailed in (Stauff et al., 2021). The model is separated into two component inputs: (1) a main particle model and (2) a parent application input that employs the MOOSE MultiApp functionality and the Samplers system to sample a user-specified number of simulations of the particle model. Particle layer widths are provided in the parent input file, which converts them to normal distributions with user-provided standard deviations and bounds. Upon each execution of the particle simulation, these geometry distributions are sampled, and a set of layer coordinates is passed to the particle simulation with the Samplers system. Following the particle simulation, layer failure data are extracted from the particle simulation with the Transfers system. This information includes, for example, binary flags for multiple failure modes, the maximum neutron fluence in the particle, and fluence at failure (if applicable). The failure rate of the particle due to several mechanisms is then reported with VectorPostprocessors that track the stochastic results of the simulation.

The HP-MR TRISO model, documented in ANL/NEAMS-21/3 (Stauff et al., 2021), received a number of changes for this work. First, the fission rate, fuel exterior temperature, and hydrostatic pressure of the particle are time-dependent quantities retrieved from outputs of the HP-MR multiphysics simulation. Fission rate is calculated within each particle simulation with a volume integral of the power density, using a fuel kernel volume that varies for each simulation due to the statistical sampling of the fuel kernel radius. Second, in accordance with the modeling approach taken by (Jiang et al., 2021), a Terminator UserObject is implemented to end the simulation early if the SiC layer is determined to have failed. This is because the TRISO fuel particle is considered to have undergone failure if the SiC layer fails, as fission gases can no longer be retained within the particle layers. Finally, also proposed by (Jiang et al., 2021), several TRISOStressCorrelationFunction and ConstantFunction objects have been implemented to describe the effects of multi-dimensional particle phenomena on layers stresses in a one-dimensional simulation.

HP-MR TRISO Multi-Dimensional Stress Correlation

For computational efficiency, a one-dimensional TRISO particle model is used for the Monte Carlo sampling scheme. However, multi-dimensional TRISO phenomena, such as particle cracking and asphericity, must be described with higher-order modeling approaches. To account for these phenomena, a suite of preliminary one-dimensional (1D) and two-dimensional (2D) TRISO particle simulations were performed with statistical variations of the inner-pyrolytic carbon (IPyC), outer-pyrolytic carbon (OPyC), and silicon carbide (SiC) layer thicknesses in two 2D scenarios: (1) a prescribed radial crack in the IPyC layer generated with the extended finite element method and (2) an aspherical TRISO particle generated by applying an aspect ratio of 1.04 to the particle mesh. The resulting maximum stresses observed in each particle layer in these 1D and 2D simulations are then used to construct correlation functions describing the effects of these phenomena on layer stresses. For the aspherical particle, the changes in stress in the 1D and 2D simulations are also used for the generation of these correlation functions. These values are applied to one-dimensional particle simulations with the TRISOStressCorrelationFunction Function object, which calls for polynomial stress correlation function coefficients, correlation factors, and changes in stress. The stress correlation function objects are shown below. The reader is encouraged to consult (Jiang et al., 2021) for further detail on the generation of these multi-dimensional stress correlation functions used in 1-D TRISO simulations.

[Functions]
  [high_fidelity_strength_crackedIPyC]
    type = ConstantFunction
    value = 1401355124.9454
  []
[]
(microreactors/mrad/triso_failure/TRISO/triso_particle.i)
[Functions]
  [stress_correlation_crackedIPyC]
    type = TRISOStressCorrelationFunction
    triso_geometry = particle_geometry
    polynomial_coefficients_IPyC = '1.03175391e+00 7.99148430e+03 1.80963575e+08'
    polynomial_coefficients_SiC = '9.99192631e-01 9.93773505e+03 3.92874322e+08'
    polynomial_coefficients_OPyC = '9.98066533e-01 -1.15052810e+04  5.69788318e+08'
    correlation_factor = -1.3019855058864431
  []
[]
(microreactors/mrad/triso_failure/TRISO/triso_particle.i)
[Functions]
  [high_fidelity_strength_asphericity]
    type = ConstantFunction
    value = '999450568.8571'
  []
[]
(microreactors/mrad/triso_failure/TRISO/triso_particle.i)
[Functions]
  [stress_correlation_asphericity]
    type = TRISOStressCorrelationFunction
    triso_geometry = particle_geometry
    polynomial_coefficients_IPyC = '9.99988455e-01  1.26137766e+04 -1.78620084e+08'
    polynomial_coefficients_SiC = '9.99985858e-01 -1.72538218e+02  1.08972415e+08'
    polynomial_coefficients_OPyC = '9.99991038e-01  2.04084033e+04 -3.16201526e+08'
    correlation_factor = 0.7597631290037449
  []
[]
(microreactors/mrad/triso_failure/TRISO/triso_particle.i)
[Functions]
  [stress_change_correlation_asphericity]
    type = TRISOStressCorrelationFunction
    triso_geometry = particle_geometry
    polynomial_coefficients_IPyC = '1.00001211e+00 -2.94486846e+02  1.69122180e+07'
    polynomial_coefficients_SiC = '1.00001206e+00  5.03963650e+03 -7.26176937e+07'
    polynomial_coefficients_OPyC = '1.00000685e+00 3.28720653e+02 2.64270044e+07'
    correlation_factor = 1.2157139173624862
  []
[]
(microreactors/mrad/triso_failure/TRISO/triso_particle.i)

HP-MR TRISO MultiApps Model Setup

MOOSE-based TRISO failure analysis in this demonstration is conducted with two BISON inputs in a MultiApps setup: (1) a TRISO sampler input serving as the parent BISON app and (2) a TRISO particle input as the sub-app.

TRISO Sampler

As stated previously, a main input employs the MOOSE MultiApp functionality and the Samplers system to sample a user-specified number of simulations of the particle model. Particle layer widths are provided in this main input file in the form of normal distributions with mean values, standard deviations, and bounds. These quantities are listed in Table 1.

Table 1: HP-MR TRISO Geometries

ParameterValues
Kernel radius (m)212.5
Kernel standard deviation (m)4.4
Buffer thickness (m)100
Buffer standard deviation (m)8.4
IPyC/OPyC thickness (m)40
IPyC standard deviation (m)2.5
OPyC standard deviation (m)2.9
SiC thickness (m)35
SiC standard deviation (m)1.2

These distributions are sampled and passed to the TRISO particle simulation with MultiApps and Transfers objects. After the simulation, particle failure data are passed back to the main app with Transfers. Failure data for each particle simulation is calculated with Postprocessors in each simulation, and transferred to VectorPostprocessors defined in the main app.

In previous work, the multiphysics unit-cell HP-MR model was discretized into 32 axial segments, serving as a a straightforward axial discretization of TRISO layer failure rates within the unit-cell. Therefore, the TRISO sampler main app is configured to instantiate and sample simulations of 32 TRISO particles, whose boundary conditions are retrieved from axially discretized data. Thus, the TRISO_sampler.i input contains 32 objects for every class required in the MultiApps setup, including MultiApps, Controls, Outputs, Transfers, and VectorPostprocessors objects. A Transfer and corresponding VectorPostprocessor object is required for the retrieval and subsequent storage of every requested output quantity from a single particle simulation. These quantites include the following: - Overall SiC failure (binary indicator) - Overall IPyC cracking (binary indicator) - Debonding (binary indicator) - SiC failure due to overpressure (binary indicator) - SiC failure due to IPyC cracking (binary indicator) - Sampler data - Fluence at failure - Palladium penetration length - Failure due to palladium penetration (binary indicator) - Kernel migration distance - Failure due to kernel migration (binary indicator)

Therefore, 352 VectorPostprocessor and Transfer objects are required in the TRISO_sampler.i main app: 32 for each of the 11 transferred quantities. However, though 32 particle simulations are instantiated and sampled in parallel, only one triso_particle.i input file is necessary, as these different simulations are distringuised through the use of the particle_number cli argument, which is used to select appropriate boundary condition .CSVs and produce TRISO simulation output files.

The full triso_sampler.i input is listed below.

################################################################################
## NEAMS Micro-Reactor Application Driver                                     ##
## Heat Pipe Microreactor TRISO Failure Model                                 ##
## Statistical Model for Evaluating TRISO Failure in the Assembly             ##
## Stochastic Module Model for Sampling                                       ##
################################################################################

# Folder hosting the pressure data
folder_name = 'fuelsample'
end_time = 315576000

coord1 = 2.125e-4
coord2 = '${fparse 1e-4 + coord1}'
coord3 = '${fparse 0.4e-4 + coord2}'
coord4 = '${fparse 0.35e-4 + coord3}'
coord5 = '${fparse 0.4e-4 + coord4}'

[StochasticTools]
  auto_create_executioner = false
[]

[Distributions]
  [normal_kernel_r]
    type = TruncatedNormal
    mean = '${fparse coord1}'
    standard_deviation = 4.4e-6
    lower_bound = '${fparse coord1-4*4.4e-6}'
    upper_bound = '${fparse coord1+4*4.4e-6}'
  []
  [normal_buffer_t]
    type = TruncatedNormal
    mean = '${fparse coord2 - coord1}'
    standard_deviation = 8.4e-6
    lower_bound = '${fparse (coord2-coord1 )-4*8.4e-6}'
    upper_bound = '${fparse (coord2-coord1 )+4*8.4e-6}'
  []
  [normal_ipyc_t]
    type = TruncatedNormal
    mean = '${fparse coord3 - coord2}'
    standard_deviation = 2.5e-6
    lower_bound = '${fparse (coord3-coord2 )-4*2.5e-6}'
    upper_bound = '${fparse (coord3-coord2 )+4*2.5e-6}'
  []
  [normal_sic_t]
    type = TruncatedNormal
    mean = '${fparse coord4 - coord3}'
    standard_deviation = 1.2e-6
    lower_bound = '${fparse (coord4-coord3)-4*1.2e-6}'
    upper_bound = '${fparse (coord4-coord3)+4*1.2e-6}'
  []
  [normal_opyc_t]
    type = TruncatedNormal
    mean = '${fparse coord5 - coord4}'
    standard_deviation = 2.9e-6
    lower_bound = '${fparse (coord5-coord4)-4*2.9e-6}'
    upper_bound = '${fparse (coord5-coord4)+4*2.9e-6}'
  []
  [uniform]
    type = Uniform
  []
[]

[Samplers]
  [sample]
    type = MonteCarlo
    num_rows = 20000
    distributions = 'normal_kernel_r normal_buffer_t normal_ipyc_t normal_sic_t normal_opyc_t uniform uniform uniform'
    execute_on = 'PRE_MULTIAPP_SETUP'
  []
[]

[MultiApps]
  [particle1]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=1;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle2]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=2;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle3]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=3;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle4]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=4;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle5]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=5;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle6]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=6;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle7]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=7;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle8]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=8;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle9]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=9;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle10]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=10;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle11]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=11;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle12]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=12;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle13]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=13;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle14]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=14;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle15]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=15;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle16]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=16;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle17]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=17;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle18]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=18;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle19]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=19;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle20]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=20;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle21]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=21;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle22]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=22;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle23]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=23;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle24]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=24;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle25]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=25;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle26]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=26;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle27]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=27;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle28]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=28;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle29]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=29;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle30]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=30;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle31]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=31;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
  [particle32]
    type = SamplerFullSolveMultiApp
    mode = batch-reset
    input_files = triso_particle.i
    cli_args = 'particle_number=32;folder_name=${folder_name};end_time=${end_time}'
    sampler = sample
    execute_on = initial
  []
[]

[Transfers]
  [failure_indicator_kernel_migration_particle1]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle1
    sampler = sample
    to_vector_postprocessor = particle1_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle1]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle1
    sampler = sample
    to_vector_postprocessor = particle1_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle1]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle1
    sampler = sample
    to_vector_postprocessor = particle1_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle1]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle1
    sampler = sample
    to_vector_postprocessor = particle1_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle1]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle1
    sampler = sample
    to_vector_postprocessor = particle1_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle1]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle1
    sampler = sample
    to_vector_postprocessor = particle1_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle1]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle1
    sampler = sample
    to_vector_postprocessor = particle1_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle1]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle1
    sampler = sample
    to_vector_postprocessor = particle1_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle1]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle1
    sampler = sample
    to_vector_postprocessor = particle1_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle1]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle1
    sampler = sample
    to_vector_postprocessor = particle1_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle2]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle2
    sampler = sample
    to_vector_postprocessor = particle2_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle2]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle2
    sampler = sample
    to_vector_postprocessor = particle2_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle2]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle2
    sampler = sample
    to_vector_postprocessor = particle2_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle2]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle2
    sampler = sample
    to_vector_postprocessor = particle2_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle2]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle2
    sampler = sample
    to_vector_postprocessor = particle2_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle2]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle2
    sampler = sample
    to_vector_postprocessor = particle2_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle2]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle2
    sampler = sample
    to_vector_postprocessor = particle2_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle2]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle2
    sampler = sample
    to_vector_postprocessor = particle2_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle2]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle2
    sampler = sample
    to_vector_postprocessor = particle2_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle2]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle2
    sampler = sample
    to_vector_postprocessor = particle2_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle3]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle3
    sampler = sample
    to_vector_postprocessor = particle3_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle3]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle3
    sampler = sample
    to_vector_postprocessor = particle3_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle3]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle3
    sampler = sample
    to_vector_postprocessor = particle3_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle3]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle3
    sampler = sample
    to_vector_postprocessor = particle3_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle3]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle3
    sampler = sample
    to_vector_postprocessor = particle3_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle3]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle3
    sampler = sample
    to_vector_postprocessor = particle3_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle3]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle3
    sampler = sample
    to_vector_postprocessor = particle3_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle3]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle3
    sampler = sample
    to_vector_postprocessor = particle3_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle3]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle3
    sampler = sample
    to_vector_postprocessor = particle3_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle3]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle3
    sampler = sample
    to_vector_postprocessor = particle3_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle4]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle4
    sampler = sample
    to_vector_postprocessor = particle4_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle4]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle4
    sampler = sample
    to_vector_postprocessor = particle4_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle4]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle4
    sampler = sample
    to_vector_postprocessor = particle4_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle4]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle4
    sampler = sample
    to_vector_postprocessor = particle4_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle4]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle4
    sampler = sample
    to_vector_postprocessor = particle4_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle4]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle4
    sampler = sample
    to_vector_postprocessor = particle4_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle4]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle4
    sampler = sample
    to_vector_postprocessor = particle4_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle4]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle4
    sampler = sample
    to_vector_postprocessor = particle4_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle4]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle4
    sampler = sample
    to_vector_postprocessor = particle4_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle4]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle4
    sampler = sample
    to_vector_postprocessor = particle4_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle5]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle5
    sampler = sample
    to_vector_postprocessor = particle5_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle5]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle5
    sampler = sample
    to_vector_postprocessor = particle5_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle5]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle5
    sampler = sample
    to_vector_postprocessor = particle5_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle5]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle5
    sampler = sample
    to_vector_postprocessor = particle5_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle5]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle5
    sampler = sample
    to_vector_postprocessor = particle5_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle5]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle5
    sampler = sample
    to_vector_postprocessor = particle5_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle5]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle5
    sampler = sample
    to_vector_postprocessor = particle5_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle5]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle5
    sampler = sample
    to_vector_postprocessor = particle5_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle5]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle5
    sampler = sample
    to_vector_postprocessor = particle5_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle5]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle5
    sampler = sample
    to_vector_postprocessor = particle5_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle6]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle6
    sampler = sample
    to_vector_postprocessor = particle6_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle6]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle6
    sampler = sample
    to_vector_postprocessor = particle6_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle6]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle6
    sampler = sample
    to_vector_postprocessor = particle6_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle6]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle6
    sampler = sample
    to_vector_postprocessor = particle6_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle6]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle6
    sampler = sample
    to_vector_postprocessor = particle6_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle6]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle6
    sampler = sample
    to_vector_postprocessor = particle6_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle6]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle6
    sampler = sample
    to_vector_postprocessor = particle6_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle6]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle6
    sampler = sample
    to_vector_postprocessor = particle6_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle6]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle6
    sampler = sample
    to_vector_postprocessor = particle6_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle6]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle6
    sampler = sample
    to_vector_postprocessor = particle6_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle7]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle7
    sampler = sample
    to_vector_postprocessor = particle7_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle7]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle7
    sampler = sample
    to_vector_postprocessor = particle7_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle7]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle7
    sampler = sample
    to_vector_postprocessor = particle7_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle7]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle7
    sampler = sample
    to_vector_postprocessor = particle7_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle7]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle7
    sampler = sample
    to_vector_postprocessor = particle7_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle7]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle7
    sampler = sample
    to_vector_postprocessor = particle7_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle7]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle7
    sampler = sample
    to_vector_postprocessor = particle7_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle7]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle7
    sampler = sample
    to_vector_postprocessor = particle7_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle7]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle7
    sampler = sample
    to_vector_postprocessor = particle7_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle7]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle7
    sampler = sample
    to_vector_postprocessor = particle7_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle8]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle8
    sampler = sample
    to_vector_postprocessor = particle8_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle8]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle8
    sampler = sample
    to_vector_postprocessor = particle8_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle8]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle8
    sampler = sample
    to_vector_postprocessor = particle8_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle8]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle8
    sampler = sample
    to_vector_postprocessor = particle8_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle8]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle8
    sampler = sample
    to_vector_postprocessor = particle8_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle8]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle8
    sampler = sample
    to_vector_postprocessor = particle8_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle8]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle8
    sampler = sample
    to_vector_postprocessor = particle8_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle8]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle8
    sampler = sample
    to_vector_postprocessor = particle8_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle8]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle8
    sampler = sample
    to_vector_postprocessor = particle8_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle8]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle8
    sampler = sample
    to_vector_postprocessor = particle8_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle9]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle9
    sampler = sample
    to_vector_postprocessor = particle9_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle9]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle9
    sampler = sample
    to_vector_postprocessor = particle9_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle9]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle9
    sampler = sample
    to_vector_postprocessor = particle9_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle9]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle9
    sampler = sample
    to_vector_postprocessor = particle9_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle9]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle9
    sampler = sample
    to_vector_postprocessor = particle9_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle9]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle9
    sampler = sample
    to_vector_postprocessor = particle9_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle9]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle9
    sampler = sample
    to_vector_postprocessor = particle9_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle9]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle9
    sampler = sample
    to_vector_postprocessor = particle9_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle9]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle9
    sampler = sample
    to_vector_postprocessor = particle9_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle9]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle9
    sampler = sample
    to_vector_postprocessor = particle9_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle10]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle10
    sampler = sample
    to_vector_postprocessor = particle10_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle10]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle10
    sampler = sample
    to_vector_postprocessor = particle10_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle10]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle10
    sampler = sample
    to_vector_postprocessor = particle10_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle10]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle10
    sampler = sample
    to_vector_postprocessor = particle10_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle10]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle10
    sampler = sample
    to_vector_postprocessor = particle10_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle10]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle10
    sampler = sample
    to_vector_postprocessor = particle10_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle10]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle10
    sampler = sample
    to_vector_postprocessor = particle10_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle10]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle10
    sampler = sample
    to_vector_postprocessor = particle10_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle10]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle10
    sampler = sample
    to_vector_postprocessor = particle10_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle10]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle10
    sampler = sample
    to_vector_postprocessor = particle10_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle11]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle11
    sampler = sample
    to_vector_postprocessor = particle11_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle11]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle11
    sampler = sample
    to_vector_postprocessor = particle11_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle11]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle11
    sampler = sample
    to_vector_postprocessor = particle11_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle11]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle11
    sampler = sample
    to_vector_postprocessor = particle11_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle11]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle11
    sampler = sample
    to_vector_postprocessor = particle11_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle11]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle11
    sampler = sample
    to_vector_postprocessor = particle11_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle11]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle11
    sampler = sample
    to_vector_postprocessor = particle11_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle11]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle11
    sampler = sample
    to_vector_postprocessor = particle11_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle11]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle11
    sampler = sample
    to_vector_postprocessor = particle11_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle11]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle11
    sampler = sample
    to_vector_postprocessor = particle11_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle12]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle12
    sampler = sample
    to_vector_postprocessor = particle12_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle12]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle12
    sampler = sample
    to_vector_postprocessor = particle12_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle12]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle12
    sampler = sample
    to_vector_postprocessor = particle12_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle12]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle12
    sampler = sample
    to_vector_postprocessor = particle12_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle12]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle12
    sampler = sample
    to_vector_postprocessor = particle12_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle12]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle12
    sampler = sample
    to_vector_postprocessor = particle12_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle12]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle12
    sampler = sample
    to_vector_postprocessor = particle12_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle12]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle12
    sampler = sample
    to_vector_postprocessor = particle12_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle12]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle12
    sampler = sample
    to_vector_postprocessor = particle12_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle12]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle12
    sampler = sample
    to_vector_postprocessor = particle12_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle13]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle13
    sampler = sample
    to_vector_postprocessor = particle13_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle13]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle13
    sampler = sample
    to_vector_postprocessor = particle13_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle13]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle13
    sampler = sample
    to_vector_postprocessor = particle13_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle13]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle13
    sampler = sample
    to_vector_postprocessor = particle13_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle13]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle13
    sampler = sample
    to_vector_postprocessor = particle13_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle13]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle13
    sampler = sample
    to_vector_postprocessor = particle13_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle13]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle13
    sampler = sample
    to_vector_postprocessor = particle13_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle13]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle13
    sampler = sample
    to_vector_postprocessor = particle13_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle13]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle13
    sampler = sample
    to_vector_postprocessor = particle13_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle13]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle13
    sampler = sample
    to_vector_postprocessor = particle13_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle14]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle14
    sampler = sample
    to_vector_postprocessor = particle14_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle14]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle14
    sampler = sample
    to_vector_postprocessor = particle14_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle14]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle14
    sampler = sample
    to_vector_postprocessor = particle14_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle14]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle14
    sampler = sample
    to_vector_postprocessor = particle14_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle14]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle14
    sampler = sample
    to_vector_postprocessor = particle14_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle14]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle14
    sampler = sample
    to_vector_postprocessor = particle14_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle14]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle14
    sampler = sample
    to_vector_postprocessor = particle14_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle14]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle14
    sampler = sample
    to_vector_postprocessor = particle14_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle14]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle14
    sampler = sample
    to_vector_postprocessor = particle14_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle14]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle14
    sampler = sample
    to_vector_postprocessor = particle14_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle15]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle15
    sampler = sample
    to_vector_postprocessor = particle15_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle15]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle15
    sampler = sample
    to_vector_postprocessor = particle15_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle15]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle15
    sampler = sample
    to_vector_postprocessor = particle15_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle15]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle15
    sampler = sample
    to_vector_postprocessor = particle15_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle15]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle15
    sampler = sample
    to_vector_postprocessor = particle15_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle15]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle15
    sampler = sample
    to_vector_postprocessor = particle15_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle15]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle15
    sampler = sample
    to_vector_postprocessor = particle15_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle15]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle15
    sampler = sample
    to_vector_postprocessor = particle15_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle15]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle15
    sampler = sample
    to_vector_postprocessor = particle15_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle15]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle15
    sampler = sample
    to_vector_postprocessor = particle15_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle16]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle16
    sampler = sample
    to_vector_postprocessor = particle16_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle16]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle16
    sampler = sample
    to_vector_postprocessor = particle16_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle16]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle16
    sampler = sample
    to_vector_postprocessor = particle16_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle16]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle16
    sampler = sample
    to_vector_postprocessor = particle16_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle16]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle16
    sampler = sample
    to_vector_postprocessor = particle16_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle16]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle16
    sampler = sample
    to_vector_postprocessor = particle16_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle16]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle16
    sampler = sample
    to_vector_postprocessor = particle16_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle16]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle16
    sampler = sample
    to_vector_postprocessor = particle16_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle16]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle16
    sampler = sample
    to_vector_postprocessor = particle16_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle16]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle16
    sampler = sample
    to_vector_postprocessor = particle16_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle17]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle17
    sampler = sample
    to_vector_postprocessor = particle17_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle17]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle17
    sampler = sample
    to_vector_postprocessor = particle17_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle17]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle17
    sampler = sample
    to_vector_postprocessor = particle17_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle17]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle17
    sampler = sample
    to_vector_postprocessor = particle17_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle17]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle17
    sampler = sample
    to_vector_postprocessor = particle17_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle17]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle17
    sampler = sample
    to_vector_postprocessor = particle17_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle17]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle17
    sampler = sample
    to_vector_postprocessor = particle17_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle17]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle17
    sampler = sample
    to_vector_postprocessor = particle17_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle17]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle17
    sampler = sample
    to_vector_postprocessor = particle17_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle17]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle17
    sampler = sample
    to_vector_postprocessor = particle17_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle18]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle18
    sampler = sample
    to_vector_postprocessor = particle18_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle18]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle18
    sampler = sample
    to_vector_postprocessor = particle18_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle18]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle18
    sampler = sample
    to_vector_postprocessor = particle18_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle18]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle18
    sampler = sample
    to_vector_postprocessor = particle18_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle18]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle18
    sampler = sample
    to_vector_postprocessor = particle18_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle18]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle18
    sampler = sample
    to_vector_postprocessor = particle18_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle18]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle18
    sampler = sample
    to_vector_postprocessor = particle18_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle18]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle18
    sampler = sample
    to_vector_postprocessor = particle18_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle18]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle18
    sampler = sample
    to_vector_postprocessor = particle18_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle18]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle18
    sampler = sample
    to_vector_postprocessor = particle18_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle19]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle19
    sampler = sample
    to_vector_postprocessor = particle19_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle19]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle19
    sampler = sample
    to_vector_postprocessor = particle19_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle19]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle19
    sampler = sample
    to_vector_postprocessor = particle19_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle19]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle19
    sampler = sample
    to_vector_postprocessor = particle19_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle19]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle19
    sampler = sample
    to_vector_postprocessor = particle19_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle19]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle19
    sampler = sample
    to_vector_postprocessor = particle19_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle19]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle19
    sampler = sample
    to_vector_postprocessor = particle19_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle19]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle19
    sampler = sample
    to_vector_postprocessor = particle19_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle19]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle19
    sampler = sample
    to_vector_postprocessor = particle19_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle19]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle19
    sampler = sample
    to_vector_postprocessor = particle19_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle20]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle20
    sampler = sample
    to_vector_postprocessor = particle20_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle20]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle20
    sampler = sample
    to_vector_postprocessor = particle20_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle20]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle20
    sampler = sample
    to_vector_postprocessor = particle20_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle20]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle20
    sampler = sample
    to_vector_postprocessor = particle20_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle20]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle20
    sampler = sample
    to_vector_postprocessor = particle20_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle20]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle20
    sampler = sample
    to_vector_postprocessor = particle20_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle20]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle20
    sampler = sample
    to_vector_postprocessor = particle20_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle20]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle20
    sampler = sample
    to_vector_postprocessor = particle20_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle20]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle20
    sampler = sample
    to_vector_postprocessor = particle20_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle20]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle20
    sampler = sample
    to_vector_postprocessor = particle20_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle21]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle21
    sampler = sample
    to_vector_postprocessor = particle21_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle21]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle21
    sampler = sample
    to_vector_postprocessor = particle21_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle21]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle21
    sampler = sample
    to_vector_postprocessor = particle21_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle21]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle21
    sampler = sample
    to_vector_postprocessor = particle21_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle21]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle21
    sampler = sample
    to_vector_postprocessor = particle21_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle21]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle21
    sampler = sample
    to_vector_postprocessor = particle21_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle21]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle21
    sampler = sample
    to_vector_postprocessor = particle21_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle21]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle21
    sampler = sample
    to_vector_postprocessor = particle21_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle21]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle21
    sampler = sample
    to_vector_postprocessor = particle21_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle21]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle21
    sampler = sample
    to_vector_postprocessor = particle21_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle22]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle22
    sampler = sample
    to_vector_postprocessor = particle22_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle22]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle22
    sampler = sample
    to_vector_postprocessor = particle22_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle22]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle22
    sampler = sample
    to_vector_postprocessor = particle22_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle22]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle22
    sampler = sample
    to_vector_postprocessor = particle22_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle22]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle22
    sampler = sample
    to_vector_postprocessor = particle22_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle22]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle22
    sampler = sample
    to_vector_postprocessor = particle22_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle22]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle22
    sampler = sample
    to_vector_postprocessor = particle22_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle22]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle22
    sampler = sample
    to_vector_postprocessor = particle22_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle22]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle22
    sampler = sample
    to_vector_postprocessor = particle22_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle22]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle22
    sampler = sample
    to_vector_postprocessor = particle22_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle23]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle23
    sampler = sample
    to_vector_postprocessor = particle23_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle23]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle23
    sampler = sample
    to_vector_postprocessor = particle23_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle23]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle23
    sampler = sample
    to_vector_postprocessor = particle23_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle23]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle23
    sampler = sample
    to_vector_postprocessor = particle23_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle23]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle23
    sampler = sample
    to_vector_postprocessor = particle23_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle23]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle23
    sampler = sample
    to_vector_postprocessor = particle23_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle23]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle23
    sampler = sample
    to_vector_postprocessor = particle23_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle23]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle23
    sampler = sample
    to_vector_postprocessor = particle23_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle23]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle23
    sampler = sample
    to_vector_postprocessor = particle23_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle23]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle23
    sampler = sample
    to_vector_postprocessor = particle23_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle24]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle24
    sampler = sample
    to_vector_postprocessor = particle24_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle24]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle24
    sampler = sample
    to_vector_postprocessor = particle24_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle24]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle24
    sampler = sample
    to_vector_postprocessor = particle24_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle24]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle24
    sampler = sample
    to_vector_postprocessor = particle24_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle24]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle24
    sampler = sample
    to_vector_postprocessor = particle24_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle24]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle24
    sampler = sample
    to_vector_postprocessor = particle24_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle24]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle24
    sampler = sample
    to_vector_postprocessor = particle24_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle24]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle24
    sampler = sample
    to_vector_postprocessor = particle24_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle24]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle24
    sampler = sample
    to_vector_postprocessor = particle24_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle24]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle24
    sampler = sample
    to_vector_postprocessor = particle24_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle25]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle25
    sampler = sample
    to_vector_postprocessor = particle25_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle25]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle25
    sampler = sample
    to_vector_postprocessor = particle25_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle25]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle25
    sampler = sample
    to_vector_postprocessor = particle25_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle25]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle25
    sampler = sample
    to_vector_postprocessor = particle25_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle25]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle25
    sampler = sample
    to_vector_postprocessor = particle25_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle25]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle25
    sampler = sample
    to_vector_postprocessor = particle25_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle25]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle25
    sampler = sample
    to_vector_postprocessor = particle25_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle25]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle25
    sampler = sample
    to_vector_postprocessor = particle25_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle25]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle25
    sampler = sample
    to_vector_postprocessor = particle25_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle25]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle25
    sampler = sample
    to_vector_postprocessor = particle25_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle26]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle26
    sampler = sample
    to_vector_postprocessor = particle26_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle26]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle26
    sampler = sample
    to_vector_postprocessor = particle26_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle26]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle26
    sampler = sample
    to_vector_postprocessor = particle26_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle26]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle26
    sampler = sample
    to_vector_postprocessor = particle26_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle26]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle26
    sampler = sample
    to_vector_postprocessor = particle26_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle26]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle26
    sampler = sample
    to_vector_postprocessor = particle26_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle26]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle26
    sampler = sample
    to_vector_postprocessor = particle26_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle26]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle26
    sampler = sample
    to_vector_postprocessor = particle26_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle26]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle26
    sampler = sample
    to_vector_postprocessor = particle26_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle26]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle26
    sampler = sample
    to_vector_postprocessor = particle26_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle27]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle27
    sampler = sample
    to_vector_postprocessor = particle27_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle27]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle27
    sampler = sample
    to_vector_postprocessor = particle27_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle27]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle27
    sampler = sample
    to_vector_postprocessor = particle27_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle27]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle27
    sampler = sample
    to_vector_postprocessor = particle27_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle27]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle27
    sampler = sample
    to_vector_postprocessor = particle27_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle27]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle27
    sampler = sample
    to_vector_postprocessor = particle27_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle27]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle27
    sampler = sample
    to_vector_postprocessor = particle27_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle27]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle27
    sampler = sample
    to_vector_postprocessor = particle27_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle27]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle27
    sampler = sample
    to_vector_postprocessor = particle27_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle27]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle27
    sampler = sample
    to_vector_postprocessor = particle27_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle28]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle28
    sampler = sample
    to_vector_postprocessor = particle28_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle28]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle28
    sampler = sample
    to_vector_postprocessor = particle28_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle28]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle28
    sampler = sample
    to_vector_postprocessor = particle28_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle28]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle28
    sampler = sample
    to_vector_postprocessor = particle28_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle28]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle28
    sampler = sample
    to_vector_postprocessor = particle28_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle28]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle28
    sampler = sample
    to_vector_postprocessor = particle28_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle28]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle28
    sampler = sample
    to_vector_postprocessor = particle28_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle28]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle28
    sampler = sample
    to_vector_postprocessor = particle28_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle28]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle28
    sampler = sample
    to_vector_postprocessor = particle28_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle28]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle28
    sampler = sample
    to_vector_postprocessor = particle28_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle29]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle29
    sampler = sample
    to_vector_postprocessor = particle29_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle29]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle29
    sampler = sample
    to_vector_postprocessor = particle29_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle29]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle29
    sampler = sample
    to_vector_postprocessor = particle29_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle29]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle29
    sampler = sample
    to_vector_postprocessor = particle29_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle29]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle29
    sampler = sample
    to_vector_postprocessor = particle29_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle29]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle29
    sampler = sample
    to_vector_postprocessor = particle29_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle29]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle29
    sampler = sample
    to_vector_postprocessor = particle29_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle29]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle29
    sampler = sample
    to_vector_postprocessor = particle29_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle29]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle29
    sampler = sample
    to_vector_postprocessor = particle29_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle29]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle29
    sampler = sample
    to_vector_postprocessor = particle29_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle30]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle30
    sampler = sample
    to_vector_postprocessor = particle30_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle30]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle30
    sampler = sample
    to_vector_postprocessor = particle30_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle30]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle30
    sampler = sample
    to_vector_postprocessor = particle30_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle30]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle30
    sampler = sample
    to_vector_postprocessor = particle30_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle30]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle30
    sampler = sample
    to_vector_postprocessor = particle30_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle30]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle30
    sampler = sample
    to_vector_postprocessor = particle30_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle30]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle30
    sampler = sample
    to_vector_postprocessor = particle30_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle30]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle30
    sampler = sample
    to_vector_postprocessor = particle30_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle30]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle30
    sampler = sample
    to_vector_postprocessor = particle30_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle30]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle30
    sampler = sample
    to_vector_postprocessor = particle30_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle31]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle31
    sampler = sample
    to_vector_postprocessor = particle31_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle31]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle31
    sampler = sample
    to_vector_postprocessor = particle31_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle31]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle31
    sampler = sample
    to_vector_postprocessor = particle31_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle31]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle31
    sampler = sample
    to_vector_postprocessor = particle31_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle31]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle31
    sampler = sample
    to_vector_postprocessor = particle31_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle31]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle31
    sampler = sample
    to_vector_postprocessor = particle31_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle31]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle31
    sampler = sample
    to_vector_postprocessor = particle31_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle31]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle31
    sampler = sample
    to_vector_postprocessor = particle31_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle31]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle31
    sampler = sample
    to_vector_postprocessor = particle31_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle31]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle31
    sampler = sample
    to_vector_postprocessor = particle31_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
  [failure_indicator_kernel_migration_particle32]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle32
    sampler = sample
    to_vector_postprocessor = particle32_failure_indicator_kernel_migration
    from_postprocessor = failure_indicator_kernel_migration
  []
  [kernel_migration_distance_particle32]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle32
    sampler = sample
    to_vector_postprocessor = particle32_kernel_migration_distance
    from_postprocessor = kernel_migration_distance
  []
  [pd_penetration_particle32]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle32
    sampler = sample
    to_vector_postprocessor = particle32_pd_penetration
    from_postprocessor = pd_penetration
  []
  [failure_indicator_pd_penetration_particle32]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle32
    sampler = sample
    to_vector_postprocessor = particle32_failure_indicator_pd_penetration
    from_postprocessor = failure_indicator_pd_penetration
  []
  [sic_failure_overall_particle32]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle32
    sampler = sample
    to_vector_postprocessor = particle32_sic_failure_overall
    from_postprocessor = sic_failure_overall
  []
  [ipyc_cracking_particle32]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle32
    sampler = sample
    to_vector_postprocessor = particle32_ipyc_cracking
    from_postprocessor = ipyc_cracking
  []
  [sic_failure_due_to_pressure_particle32]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle32
    sampler = sample
    to_vector_postprocessor = particle32_sic_failure_due_to_pressure
    from_postprocessor = sic_failure_due_to_pressure
  []
  [sic_failure_due_to_ipyc_cracking_particle32]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle32
    sampler = sample
    to_vector_postprocessor = particle32_sic_failure_due_to_ipyc_cracking
    from_postprocessor = sic_failure_due_to_ipyc_cracking
  []
  [max_fluence_particle32]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle32
    sampler = sample
    to_vector_postprocessor = particle32_max_fluence
    from_postprocessor = max_fluence
  []
  [fluence_at_failure_particle32]
    type = SamplerPostprocessorTransfer
    from_multi_app = particle32
    sampler = sample
    to_vector_postprocessor = particle32_fluence_at_failure
    from_postprocessor = fluence_at_failure
  []
[]

[Controls]
  [particle1]
    type = MultiAppSamplerControl
    multi_app = particle1
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle2]
    type = MultiAppSamplerControl
    multi_app = particle2
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle3]
    type = MultiAppSamplerControl
    multi_app = particle3
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle4]
    type = MultiAppSamplerControl
    multi_app = particle4
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle5]
    type = MultiAppSamplerControl
    multi_app = particle5
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle6]
    type = MultiAppSamplerControl
    multi_app = particle6
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle7]
    type = MultiAppSamplerControl
    multi_app = particle7
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle8]
    type = MultiAppSamplerControl
    multi_app = particle8
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle9]
    type = MultiAppSamplerControl
    multi_app = particle9
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle10]
    type = MultiAppSamplerControl
    multi_app = particle10
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle11]
    type = MultiAppSamplerControl
    multi_app = particle11
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle12]
    type = MultiAppSamplerControl
    multi_app = particle12
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle13]
    type = MultiAppSamplerControl
    multi_app = particle13
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle14]
    type = MultiAppSamplerControl
    multi_app = particle14
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle15]
    type = MultiAppSamplerControl
    multi_app = particle15
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle16]
    type = MultiAppSamplerControl
    multi_app = particle16
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle17]
    type = MultiAppSamplerControl
    multi_app = particle17
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle18]
    type = MultiAppSamplerControl
    multi_app = particle18
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle19]
    type = MultiAppSamplerControl
    multi_app = particle19
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle20]
    type = MultiAppSamplerControl
    multi_app = particle20
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle21]
    type = MultiAppSamplerControl
    multi_app = particle21
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle22]
    type = MultiAppSamplerControl
    multi_app = particle22
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle23]
    type = MultiAppSamplerControl
    multi_app = particle23
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle24]
    type = MultiAppSamplerControl
    multi_app = particle24
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle25]
    type = MultiAppSamplerControl
    multi_app = particle25
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle26]
    type = MultiAppSamplerControl
    multi_app = particle26
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle27]
    type = MultiAppSamplerControl
    multi_app = particle27
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle28]
    type = MultiAppSamplerControl
    multi_app = particle28
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle29]
    type = MultiAppSamplerControl
    multi_app = particle29
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle30]
    type = MultiAppSamplerControl
    multi_app = particle30
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle31]
    type = MultiAppSamplerControl
    multi_app = particle31
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
  [particle32]
    type = MultiAppSamplerControl
    multi_app = particle32
    sampler = sample
    param_names = 'Mesh/gen/kernel_radius Mesh/gen/buffer_thickness Mesh/gen/IPyC_thickness Mesh/gen/SiC_thickness Mesh/gen/OPyC_thickness Postprocessors/failure_indicator_IPyC/quantile Postprocessors/failure_indicator_SiC_crackedIPyC/quantile Postprocessors/failure_indicator_SiC/quantile'
  []
[]

[VectorPostprocessors]
  [particle1_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle1_out
  []
  [particle1_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle1_out
  []
  [particle1_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle1_out
  []
  [particle1_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle1_out
  []
  [particle1_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle1_out
  []
  [particle1_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle1_out
  []
  [particle1_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle1_out
  []
  [particle1_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle1_out
  []
  [particle1_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle1_out
  []
  [particle1_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle1_out
  []
  [particle1_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle1_out
  []
  [particle1_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle1_out
  []
  [particle2_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle2_out
  []
  [particle2_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle2_out
  []
  [particle2_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle2_out
  []
  [particle2_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle2_out
  []
  [particle2_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle2_out
  []
  [particle2_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle2_out
  []
  [particle2_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle2_out
  []
  [particle2_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle2_out
  []
  [particle2_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle2_out
  []
  [particle2_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle2_out
  []
  [particle2_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle2_out
  []
  [particle2_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle2_out
  []
  [particle3_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle3_out
  []
  [particle3_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle3_out
  []
  [particle3_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle3_out
  []
  [particle3_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle3_out
  []
  [particle3_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle3_out
  []
  [particle3_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle3_out
  []
  [particle3_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle3_out
  []
  [particle3_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle3_out
  []
  [particle3_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle3_out
  []
  [particle3_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle3_out
  []
  [particle3_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle3_out
  []
  [particle3_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle3_out
  []
  [particle4_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle4_out
  []
  [particle4_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle4_out
  []
  [particle4_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle4_out
  []
  [particle4_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle4_out
  []
  [particle4_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle4_out
  []
  [particle4_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle4_out
  []
  [particle4_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle4_out
  []
  [particle4_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle4_out
  []
  [particle4_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle4_out
  []
  [particle4_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle4_out
  []
  [particle4_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle4_out
  []
  [particle4_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle4_out
  []
  [particle5_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle5_out
  []
  [particle5_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle5_out
  []
  [particle5_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle5_out
  []
  [particle5_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle5_out
  []
  [particle5_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle5_out
  []
  [particle5_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle5_out
  []
  [particle5_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle5_out
  []
  [particle5_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle5_out
  []
  [particle5_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle5_out
  []
  [particle5_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle5_out
  []
  [particle5_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle5_out
  []
  [particle5_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle5_out
  []
  [particle6_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle6_out
  []
  [particle6_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle6_out
  []
  [particle6_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle6_out
  []
  [particle6_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle6_out
  []
  [particle6_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle6_out
  []
  [particle6_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle6_out
  []
  [particle6_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle6_out
  []
  [particle6_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle6_out
  []
  [particle6_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle6_out
  []
  [particle6_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle6_out
  []
  [particle6_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle6_out
  []
  [particle6_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle6_out
  []
  [particle7_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle7_out
  []
  [particle7_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle7_out
  []
  [particle7_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle7_out
  []
  [particle7_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle7_out
  []
  [particle7_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle7_out
  []
  [particle7_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle7_out
  []
  [particle7_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle7_out
  []
  [particle7_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle7_out
  []
  [particle7_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle7_out
  []
  [particle7_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle7_out
  []
  [particle7_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle7_out
  []
  [particle7_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle7_out
  []
  [particle8_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle8_out
  []
  [particle8_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle8_out
  []
  [particle8_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle8_out
  []
  [particle8_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle8_out
  []
  [particle8_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle8_out
  []
  [particle8_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle8_out
  []
  [particle8_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle8_out
  []
  [particle8_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle8_out
  []
  [particle8_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle8_out
  []
  [particle8_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle8_out
  []
  [particle8_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle8_out
  []
  [particle8_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle8_out
  []
  [particle9_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle9_out
  []
  [particle9_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle9_out
  []
  [particle9_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle9_out
  []
  [particle9_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle9_out
  []
  [particle9_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle9_out
  []
  [particle9_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle9_out
  []
  [particle9_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle9_out
  []
  [particle9_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle9_out
  []
  [particle9_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle9_out
  []
  [particle9_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle9_out
  []
  [particle9_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle9_out
  []
  [particle9_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle9_out
  []
  [particle10_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle10_out
  []
  [particle10_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle10_out
  []
  [particle10_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle10_out
  []
  [particle10_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle10_out
  []
  [particle10_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle10_out
  []
  [particle10_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle10_out
  []
  [particle10_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle10_out
  []
  [particle10_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle10_out
  []
  [particle10_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle10_out
  []
  [particle10_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle10_out
  []
  [particle10_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle10_out
  []
  [particle10_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle10_out
  []
  [particle11_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle11_out
  []
  [particle11_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle11_out
  []
  [particle11_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle11_out
  []
  [particle11_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle11_out
  []
  [particle11_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle11_out
  []
  [particle11_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle11_out
  []
  [particle11_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle11_out
  []
  [particle11_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle11_out
  []
  [particle11_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle11_out
  []
  [particle11_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle11_out
  []
  [particle11_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle11_out
  []
  [particle11_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle11_out
  []
  [particle12_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle12_out
  []
  [particle12_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle12_out
  []
  [particle12_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle12_out
  []
  [particle12_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle12_out
  []
  [particle12_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle12_out
  []
  [particle12_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle12_out
  []
  [particle12_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle12_out
  []
  [particle12_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle12_out
  []
  [particle12_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle12_out
  []
  [particle12_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle12_out
  []
  [particle12_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle12_out
  []
  [particle12_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle12_out
  []
  [particle13_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle13_out
  []
  [particle13_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle13_out
  []
  [particle13_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle13_out
  []
  [particle13_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle13_out
  []
  [particle13_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle13_out
  []
  [particle13_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle13_out
  []
  [particle13_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle13_out
  []
  [particle13_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle13_out
  []
  [particle13_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle13_out
  []
  [particle13_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle13_out
  []
  [particle13_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle13_out
  []
  [particle13_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle13_out
  []
  [particle14_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle14_out
  []
  [particle14_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle14_out
  []
  [particle14_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle14_out
  []
  [particle14_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle14_out
  []
  [particle14_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle14_out
  []
  [particle14_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle14_out
  []
  [particle14_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle14_out
  []
  [particle14_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle14_out
  []
  [particle14_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle14_out
  []
  [particle14_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle14_out
  []
  [particle14_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle14_out
  []
  [particle14_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle14_out
  []
  [particle15_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle15_out
  []
  [particle15_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle15_out
  []
  [particle15_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle15_out
  []
  [particle15_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle15_out
  []
  [particle15_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle15_out
  []
  [particle15_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle15_out
  []
  [particle15_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle15_out
  []
  [particle15_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle15_out
  []
  [particle15_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle15_out
  []
  [particle15_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle15_out
  []
  [particle15_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle15_out
  []
  [particle15_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle15_out
  []
  [particle16_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle16_out
  []
  [particle16_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle16_out
  []
  [particle16_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle16_out
  []
  [particle16_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle16_out
  []
  [particle16_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle16_out
  []
  [particle16_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle16_out
  []
  [particle16_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle16_out
  []
  [particle16_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle16_out
  []
  [particle16_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle16_out
  []
  [particle16_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle16_out
  []
  [particle16_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle16_out
  []
  [particle16_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle16_out
  []
  [particle17_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle17_out
  []
  [particle17_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle17_out
  []
  [particle17_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle17_out
  []
  [particle17_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle17_out
  []
  [particle17_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle17_out
  []
  [particle17_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle17_out
  []
  [particle17_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle17_out
  []
  [particle17_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle17_out
  []
  [particle17_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle17_out
  []
  [particle17_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle17_out
  []
  [particle17_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle17_out
  []
  [particle17_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle17_out
  []
  [particle18_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle18_out
  []
  [particle18_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle18_out
  []
  [particle18_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle18_out
  []
  [particle18_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle18_out
  []
  [particle18_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle18_out
  []
  [particle18_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle18_out
  []
  [particle18_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle18_out
  []
  [particle18_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle18_out
  []
  [particle18_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle18_out
  []
  [particle18_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle18_out
  []
  [particle18_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle18_out
  []
  [particle18_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle18_out
  []
  [particle19_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle19_out
  []
  [particle19_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle19_out
  []
  [particle19_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle19_out
  []
  [particle19_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle19_out
  []
  [particle19_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle19_out
  []
  [particle19_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle19_out
  []
  [particle19_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle19_out
  []
  [particle19_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle19_out
  []
  [particle19_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle19_out
  []
  [particle19_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle19_out
  []
  [particle19_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle19_out
  []
  [particle19_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle19_out
  []
  [particle20_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle20_out
  []
  [particle20_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle20_out
  []
  [particle20_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle20_out
  []
  [particle20_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle20_out
  []
  [particle20_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle20_out
  []
  [particle20_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle20_out
  []
  [particle20_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle20_out
  []
  [particle20_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle20_out
  []
  [particle20_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle20_out
  []
  [particle20_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle20_out
  []
  [particle20_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle20_out
  []
  [particle20_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle20_out
  []
  [particle21_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle21_out
  []
  [particle21_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle21_out
  []
  [particle21_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle21_out
  []
  [particle21_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle21_out
  []
  [particle21_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle21_out
  []
  [particle21_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle21_out
  []
  [particle21_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle21_out
  []
  [particle21_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle21_out
  []
  [particle21_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle21_out
  []
  [particle21_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle21_out
  []
  [particle21_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle21_out
  []
  [particle21_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle21_out
  []
  [particle22_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle22_out
  []
  [particle22_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle22_out
  []
  [particle22_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle22_out
  []
  [particle22_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle22_out
  []
  [particle22_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle22_out
  []
  [particle22_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle22_out
  []
  [particle22_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle22_out
  []
  [particle22_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle22_out
  []
  [particle22_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle22_out
  []
  [particle22_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle22_out
  []
  [particle22_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle22_out
  []
  [particle22_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle22_out
  []
  [particle23_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle23_out
  []
  [particle23_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle23_out
  []
  [particle23_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle23_out
  []
  [particle23_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle23_out
  []
  [particle23_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle23_out
  []
  [particle23_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle23_out
  []
  [particle23_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle23_out
  []
  [particle23_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle23_out
  []
  [particle23_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle23_out
  []
  [particle23_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle23_out
  []
  [particle23_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle23_out
  []
  [particle23_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle23_out
  []
  [particle24_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle24_out
  []
  [particle24_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle24_out
  []
  [particle24_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle24_out
  []
  [particle24_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle24_out
  []
  [particle24_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle24_out
  []
  [particle24_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle24_out
  []
  [particle24_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle24_out
  []
  [particle24_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle24_out
  []
  [particle24_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle24_out
  []
  [particle24_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle24_out
  []
  [particle24_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle24_out
  []
  [particle24_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle24_out
  []
  [particle25_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle25_out
  []
  [particle25_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle25_out
  []
  [particle25_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle25_out
  []
  [particle25_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle25_out
  []
  [particle25_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle25_out
  []
  [particle25_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle25_out
  []
  [particle25_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle25_out
  []
  [particle25_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle25_out
  []
  [particle25_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle25_out
  []
  [particle25_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle25_out
  []
  [particle25_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle25_out
  []
  [particle25_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle25_out
  []
  [particle26_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle26_out
  []
  [particle26_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle26_out
  []
  [particle26_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle26_out
  []
  [particle26_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle26_out
  []
  [particle26_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle26_out
  []
  [particle26_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle26_out
  []
  [particle26_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle26_out
  []
  [particle26_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle26_out
  []
  [particle26_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle26_out
  []
  [particle26_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle26_out
  []
  [particle26_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle26_out
  []
  [particle26_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle26_out
  []
  [particle27_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle27_out
  []
  [particle27_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle27_out
  []
  [particle27_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle27_out
  []
  [particle27_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle27_out
  []
  [particle27_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle27_out
  []
  [particle27_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle27_out
  []
  [particle27_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle27_out
  []
  [particle27_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle27_out
  []
  [particle27_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle27_out
  []
  [particle27_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle27_out
  []
  [particle27_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle27_out
  []
  [particle27_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle27_out
  []
  [particle28_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle28_out
  []
  [particle28_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle28_out
  []
  [particle28_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle28_out
  []
  [particle28_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle28_out
  []
  [particle28_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle28_out
  []
  [particle28_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle28_out
  []
  [particle28_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle28_out
  []
  [particle28_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle28_out
  []
  [particle28_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle28_out
  []
  [particle28_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle28_out
  []
  [particle28_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle28_out
  []
  [particle28_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle28_out
  []
  [particle29_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle29_out
  []
  [particle29_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle29_out
  []
  [particle29_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle29_out
  []
  [particle29_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle29_out
  []
  [particle29_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle29_out
  []
  [particle29_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle29_out
  []
  [particle29_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle29_out
  []
  [particle29_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle29_out
  []
  [particle29_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle29_out
  []
  [particle29_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle29_out
  []
  [particle29_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle29_out
  []
  [particle29_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle29_out
  []
  [particle30_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle30_out
  []
  [particle30_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle30_out
  []
  [particle30_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle30_out
  []
  [particle30_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle30_out
  []
  [particle30_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle30_out
  []
  [particle30_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle30_out
  []
  [particle30_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle30_out
  []
  [particle30_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle30_out
  []
  [particle30_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle30_out
  []
  [particle30_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle30_out
  []
  [particle30_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle30_out
  []
  [particle30_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle30_out
  []
  [particle31_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle31_out
  []
  [particle31_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle31_out
  []
  [particle31_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle31_out
  []
  [particle31_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle31_out
  []
  [particle31_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle31_out
  []
  [particle31_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle31_out
  []
  [particle31_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle31_out
  []
  [particle31_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle31_out
  []
  [particle31_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle31_out
  []
  [particle31_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle31_out
  []
  [particle31_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle31_out
  []
  [particle31_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle31_out
  []
  [particle32_sic_failure_overall]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle32_out
  []
  [particle32_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle32_out
  []
  [particle32_debonding]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle32_out
  []
  [particle32_sic_failure_due_to_pressure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle32_out
  []
  [particle32_sic_failure_due_to_ipyc_cracking]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle32_out
  []
  [particle32_sampler_data]
    type = SamplerData
    sampler = sample
    execute_on = 'TIMESTEP_END'
    outputs = particle32_out
  []
  [particle32_max_fluence]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle32_out
  []
  [particle32_fluence_at_failure]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle32_out
  []
  [particle32_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle32_out
  []
  [particle32_failure_indicator_pd_penetration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle32_out
  []
  [particle32_kernel_migration_distance]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle32_out
  []
  [particle32_failure_indicator_kernel_migration]
    type = StochasticResults
    execute_on = 'TIMESTEP_END'
    outputs = particle32_out
  []
[]

[Executioner]
  type = Steady
[]

[Outputs]
  exodus = false
  print_linear_converged_reason = false
  print_nonlinear_converged_reason = false
  [particle1_out]
    type = CSV
    file_base = results/particle1/
    execute_on = 'TIMESTEP_END'
  []
  [particle2_out]
    type = CSV
    file_base = results/particle2/
    execute_on = 'TIMESTEP_END'
  []
  [particle3_out]
    type = CSV
    file_base = results/particle3/
    execute_on = 'TIMESTEP_END'
  []
  [particle4_out]
    type = CSV
    file_base = results/particle4/
    execute_on = 'TIMESTEP_END'
  []
  [particle5_out]
    type = CSV
    file_base = results/particle5/
    execute_on = 'TIMESTEP_END'
  []
  [particle6_out]
    type = CSV
    file_base = results/particle6/
    execute_on = 'TIMESTEP_END'
  []
  [particle7_out]
    type = CSV
    file_base = results/particle7/
    execute_on = 'TIMESTEP_END'
  []
  [particle8_out]
    type = CSV
    file_base = results/particle8/
    execute_on = 'TIMESTEP_END'
  []
  [particle9_out]
    type = CSV
    file_base = results/particle9/
    execute_on = 'TIMESTEP_END'
  []
  [particle10_out]
    type = CSV
    file_base = results/particle10/
    execute_on = 'TIMESTEP_END'
  []
  [particle11_out]
    type = CSV
    file_base = results/particle11/
    execute_on = 'TIMESTEP_END'
  []
  [particle12_out]
    type = CSV
    file_base = results/particle12/
    execute_on = 'TIMESTEP_END'
  []
  [particle13_out]
    type = CSV
    file_base = results/particle13/
    execute_on = 'TIMESTEP_END'
  []
  [particle14_out]
    type = CSV
    file_base = results/particle14/
    execute_on = 'TIMESTEP_END'
  []
  [particle15_out]
    type = CSV
    file_base = results/particle15/
    execute_on = 'TIMESTEP_END'
  []
  [particle16_out]
    type = CSV
    file_base = results/particle16/
    execute_on = 'TIMESTEP_END'
  []
  [particle17_out]
    type = CSV
    file_base = results/particle17/
    execute_on = 'TIMESTEP_END'
  []
  [particle18_out]
    type = CSV
    file_base = results/particle18/
    execute_on = 'TIMESTEP_END'
  []
  [particle19_out]
    type = CSV
    file_base = results/particle19/
    execute_on = 'TIMESTEP_END'
  []
  [particle20_out]
    type = CSV
    file_base = results/particle20/
    execute_on = 'TIMESTEP_END'
  []
  [particle21_out]
    type = CSV
    file_base = results/particle21/
    execute_on = 'TIMESTEP_END'
  []
  [particle22_out]
    type = CSV
    file_base = results/particle22/
    execute_on = 'TIMESTEP_END'
  []
  [particle23_out]
    type = CSV
    file_base = results/particle23/
    execute_on = 'TIMESTEP_END'
  []
  [particle24_out]
    type = CSV
    file_base = results/particle24/
    execute_on = 'TIMESTEP_END'
  []
  [particle25_out]
    type = CSV
    file_base = results/particle25/
    execute_on = 'TIMESTEP_END'
  []
  [particle26_out]
    type = CSV
    file_base = results/particle26/
    execute_on = 'TIMESTEP_END'
  []
  [particle27_out]
    type = CSV
    file_base = results/particle27/
    execute_on = 'TIMESTEP_END'
  []
  [particle28_out]
    type = CSV
    file_base = results/particle28/
    execute_on = 'TIMESTEP_END'
  []
  [particle29_out]
    type = CSV
    file_base = results/particle29/
    execute_on = 'TIMESTEP_END'
  []
  [particle30_out]
    type = CSV
    file_base = results/particle30/
    execute_on = 'TIMESTEP_END'
  []
  [particle31_out]
    type = CSV
    file_base = results/particle31/
    execute_on = 'TIMESTEP_END'
  []
  [particle32_out]
    type = CSV
    file_base = results/particle32/
    execute_on = 'TIMESTEP_END'
  []
[]
(microreactors/mrad/triso_failure/TRISO/triso_sampler.i)

TRISO Particle

The TRISO particle input is largely repurposed from the work done in (Jiang et al., 2021), and available in the BISON repository at bison/examples/TRISO/failure_probability_monte_carlo/triso_1d_function.i. It is a one-dimensional TRISO model whose irradiation and composition parameters are provided in Table 2

Table 2: Fuel parameters used in this input file

ParameterValues
Fuel TypeUCO
U enrichment (at.%)19.55
Carbon/uranium (atomic ratio)0.4
Oxygen/uranium (atomic ratio)1.5
Kernel density (g/cm)10.744
Buffer density (g/cm)1.05
IPyC density (g/cm)1.882
OPyC density (g/cm)1.882
SiC density (g/cm)3.171
Initial IPyC BAF1.0465
Initial OPyC BAF1.0429
Fast Flux

where BAF is the Bacon anisotropy factor, which increases with fast fluence.

The major difference between this particle input and the reference file at bison/examples/TRISO/failure_probability_monte_carlo/triso_1d_function.i is the definition of the thermo-mechanical boundary conditions, namely the fuel temperature, power density, and hydrostatic stress, which are retrieved from CSV datafiles produced by the unit-cell HP-MR multiphysics simulation. Each time a triso_particle.i simulation is executed, the appropriate data is selected due to the particle_number cli_arg defined in the MultiApps object that instantiates the simulation. The power density function is used in conjunction with an InternalVolume Postprocessor in a ParsedFunction to compute fission rate. Another key difference between this particle input and the reference file is the adoption of irradiation-induced deformation models in the SiC layer. The latest mechanical models are implemented to properly account irradiation-induced swelling and creep deformation behaviors in the SiC layer with the MonolithicSiCVolumetricSwellingEigenstrain and the MonolithicSiCCreepUpdate objects. The core-average fast neutron flux value was acquired from the Serpent-2 analysis at the beginning-of-cycle to improve stress analysis in TRISO particles.


[Functions]
  [pressure_function]
    type=PiecewiseLinear
    format=columns
    data_file=${raw '../UnitCell_with_TM/fuelsample/pressuredata ${particle_number} .csv'}
  []
  [pdens_function]
    type=PiecewiseLinear
    format=columns
    data_file=${raw '../UnitCell_with_TM/fuelsample/powdata ${particle_number} .csv'}
  []
  [temperature_function]
    type=PiecewiseLinear
    format=columns
    data_file=${raw '../UnitCell_with_TM/fuelsample/tempdata ${particle_number} .csv'}
  []
  [fission_rate]
    type=ParsedFunction
    expression = 'Pdens * PackingFraction * Vol / Jfiss'
    symbol_names = 'Pdens PackingFraction Vol Jfiss'
    symbol_values = 'pdens_function 0.4 kernel_volume 3.2e-11'
  []
  ...
[]

Temperature and pressure are then applied as boundary conditions (BCs) with the FunctionDirichletBC and Pressure boundary condition objects, respectively.


[BCs]
  ...
  [freesurf_temp]
    type = FunctionDirichletBC
    variable = temperature
    function = temperature_function
    boundary = exterior
  []
  [exterior_pressure_x]
    type = Pressure
    variable = disp_x
    boundary = exterior
    function = pressure_function
  []
  ...
[]

The full triso_particle.i input is listed below.

################################################################################
## NEAMS Micro-Reactor Application Driver                                     ##
## Heat Pipe Microreactor TRISO Failure Model                                 ##
## Statistical Model for Evaluating TRISO Failure in the Assembly             ##
## BISON Model for single particle simulation                                 ##
################################################################################

folder_name = fuelsample
end_time = 315576000

[GlobalParams]
  flux_conversion_factor = 1.0
  order = FIRST
  family = LAGRANGE
  displacements = 'disp_x'
  volumetric_locking_correction = false
  O_U = 1.5 # Initial Oxygen to Uranium atom ratio
  C_U = 0.4 # Initial Carbon to Uranium atom ratio
  initial_enrichment = 0.1955 # [wt-]
  stress_free_temperature = 298
[]

[Mesh]
  coord_type = RSPHERICAL
  [gen]
    type = TRISO1DFiveLayerMeshGenerator
    elem_type = EDGE3
    kernel_radius = 2.125e-4
    buffer_thickness = 1e-4
    IPyC_thickness = 0.4e-4
    SiC_thickness = 0.35e-4
    OPyC_thickness = 0.4e-4
    kernel_mesh_density = 5
    buffer_mesh_density = 3
    IPyC_mesh_density = 5
    SiC_mesh_density = 3
    OPyC_mesh_density = 4
  []
[]

[Problem]
  type = ReferenceResidualProblem
  reference_vector = 'ref'
  extra_tag_vectors = 'ref'
[]

[UserObjects]
  [particle_geometry]
    type = TRISOGeometry
    outer_OPyC = OPyC_outer_boundary
    outer_SiC = SiC_outer_boundary
    outer_IPyC = IPyC_outer_boundary
    inner_IPyC = IPyC_inner_boundary
    outer_buffer = buffer_outer_boundary
    outer_kernel = fuel_outer_boundary
    include_particle = true
    include_pebble = false
    IPyC_thickness_mean = 0.4e-4
    SiC_thickness_mean = 0.35e-4
    OPyC_thickness_mean = 0.4e-4
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [sic_failure_terminator]
    type = Terminator
    expression = 'sic_failure_overall > 0'
  []
[]

[Variables]
  [temperature]
    initial_condition = 298
  []
[]

[AuxVariables]
  [fission_rate]
    order = CONSTANT
    family = MONOMIAL
  []
  [burnup]
    order = CONSTANT
    family = MONOMIAL
  []
  [fast_neutron_flux]
    order = CONSTANT
    family = MONOMIAL
  []
  [fast_neutron_fluence]
    order = CONSTANT
    family = MONOMIAL
  []
  [creep_strain_mag]
    order = CONSTANT
    family = MONOMIAL
  []
[]

[Functions]
  [pressure_function]
    type = PiecewiseLinear
    format = columns
    data_file = ${raw '../UnitCell_with_TM/ ${folder_name} /pressuredata ${particle_number} .csv'}
  []
  [pdens_function]
    type = PiecewiseLinear
    format = columns
    data_file = ${raw '../UnitCell_with_TM/ ${folder_name} /powdata ${particle_number} .csv'}
  []
  [temperature_function]
    type = PiecewiseLinear
    format = columns
    data_file = ${raw '../UnitCell_with_TM/ ${folder_name} /tempdata ${particle_number} .csv'}
  []
  [fission_rate]
    type = ParsedFunction
    expression = 'Pdens * PackingFraction * Vol / Jfiss'
    symbol_names = 'Pdens PackingFraction Vol Jfiss'
    symbol_values = 'pdens_function 0.4 kernel_volume 3.2e-11'
  []
  [high_fidelity_strength_crackedIPyC]
    type = ConstantFunction
    value = 1401355124.9454
  []
  [stress_correlation_crackedIPyC]
    type = TRISOStressCorrelationFunction
    triso_geometry = particle_geometry
    polynomial_coefficients_IPyC = '1.03175391e+00 7.99148430e+03 1.80963575e+08'
    polynomial_coefficients_SiC = '9.99192631e-01 9.93773505e+03 3.92874322e+08'
    polynomial_coefficients_OPyC = '9.98066533e-01 -1.15052810e+04  5.69788318e+08'
    correlation_factor = -1.3019855058864431
  []
  [high_fidelity_strength_asphericity]
    type = ConstantFunction
    value = '999450568.8571'
  []
  [stress_correlation_asphericity]
    type = TRISOStressCorrelationFunction
    triso_geometry = particle_geometry
    polynomial_coefficients_IPyC = '9.99988455e-01  1.26137766e+04 -1.78620084e+08'
    polynomial_coefficients_SiC = '9.99985858e-01 -1.72538218e+02  1.08972415e+08'
    polynomial_coefficients_OPyC = '9.99991038e-01  2.04084033e+04 -3.16201526e+08'
    correlation_factor = 0.7597631290037449
  []
  [stress_change_correlation_asphericity]
    type = TRISOStressCorrelationFunction
    triso_geometry = particle_geometry
    polynomial_coefficients_IPyC = '1.00001211e+00 -2.94486846e+02  1.69122180e+07'
    polynomial_coefficients_SiC = '1.00001206e+00  5.03963650e+03 -7.26176937e+07'
    polynomial_coefficients_OPyC = '1.00000685e+00 3.28720653e+02 2.64270044e+07'
    correlation_factor = 1.2157139173624862
  []
  [k_function]
    type = PiecewiseLinear
    x = '0     200e6'
    y = '2e-37 2e-37'
  []
[]

[Physics/SolidMechanics/QuasiStatic]
  generate_output = 'stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz max_principal_stress hydrostatic_stress'
  add_variables = true
  strain = FINITE
  incremental = true
  [fuel]
    block = fuel
    eigenstrain_names = 'UCO_swelling_eigenstrain UCO_TE_strain'
    extra_vector_tags = 'ref'
  []
  [buffer]
    block = buffer
    eigenstrain_names = 'Buffer_IIDC_strain Buffer_TE_strain'
    extra_vector_tags = 'ref'
  []
  [IPyC]
    block = IPyC
    eigenstrain_names = 'IPyC_IIDC_strain IPyC_TE_strain'
    extra_vector_tags = 'ref'
  []
  [SiC]
    block = SiC
    eigenstrain_names = 'SiC_thermal_eigenstrain SiC_volumetric_swelling'
    extra_vector_tags = 'ref'
  []
  [OPyC]
    block = OPyC
    eigenstrain_names = 'OPyC_IIDC_strain OPyC_TE_strain'
    extra_vector_tags = 'ref'
  []
[]

[Kernels]
  [heat_ie]
    type = HeatConductionTimeDerivative
    variable = temperature
    extra_vector_tags = 'ref'
  []
  [heat]
    type = HeatConduction
    variable = temperature
    extra_vector_tags = 'ref'
  []
  [heat_source]
    type = NeutronHeatSource
    variable = temperature
    block = fuel
    fission_rate = fission_rate
    extra_vector_tags = 'ref'
  []
[]

[AuxKernels]
  [fissionrate]
    type = MaterialRealAux
    variable = fission_rate
    property = fission_rate
    block = fuel
    execute_on = timestep_begin
  []
  [burnup]
    type = MaterialRealAux
    variable = burnup
    property = burnup
    block = fuel
    execute_on = timestep_begin
  []
  [fast_neutron_flux]
    type = MaterialRealAux
    variable = fast_neutron_flux
    property = fast_neutron_flux
    execute_on = timestep_begin
  []
  [fast_neutron_fluence]
    type = MaterialRealAux
    variable = fast_neutron_fluence
    property = fast_neutron_fluence
    execute_on = timestep_begin
  []
  [sic_creep_strain_mag]
    type = MaterialRealAux
    variable = creep_strain_mag
    property = effective_creep_strain
    block = SiC
  []
[]

[ThermalContact]
  [thermal_contact]
    type = GasGapHeatTransfer
    variable = temperature
    primary = IPyC_inner_boundary
    secondary = buffer_outer_boundary
    initial_moles = initial_moles
    gas_released = 'fis_gas_released'
    released_gas_types = 'Kr Xe'
    released_fractions = '0.185 0.815'
    tangential_tolerance = 1e-6
    quadrature = false
    min_gap = 1e-7
    max_gap = 50e-6
    gap_geometry_type = sphere
  []
[]

[BCs]
  [no_disp_x]
    type = DirichletBC
    variable = disp_x
    boundary = xzero
    value = 0.0
  []
  [freesurf_temp]
    type = FunctionDirichletBC
    variable = temperature
    function = temperature_function
    boundary = exterior
  []
  [exterior_pressure_x]
    type = Pressure
    variable = disp_x
    boundary = exterior
    function = pressure_function
  []
  [PlenumPressure]
    [plenumPressure]
      boundary = buffer_IPyC_boundary
      startup_time = 1e4
      initial_pressure = 0
      R = 8.3145
      output_initial_moles = initial_moles
      temperature = ave_gas_temp
      volume = 'gap_volume buffer_void_volume kernel_void_volume'
      material_input = 'fis_gas_released'
      output = gas_pressure
    []
  []
[]

[Materials]
  [kernel_radius]
    type = GenericConstantMaterial
    prop_names = 'radius'
    prop_values = '1.0'
    block = fuel
  []
  [radial_stress]
    type = RankTwoCylindricalComponent
    rank_two_tensor = stress
    cylindrical_axis_point1 = '0 0 0'
    cylindrical_axis_point2 = '0 0 1'
    cylindrical_component = RadialStress
    property_name = radial_stress
    outputs = all
  []
  [fission_rate]
    type = GenericFunctionMaterial
    prop_names = fission_rate
    prop_values = fission_rate
    block = fuel
  []
  [fast_neutron_flux]
    type = FastNeutronFlux
    calculate_fluence = true
    factor = 3.4913e15
  []
  [UCO_burnup]
    type = TRISOBurnup
    initial_density = 10744.0
    block = fuel
  []
  [UCO_thermal]
    type = UCOThermal
    block = fuel
    temperature = temperature
  []
  [UCO_elasticity_tensor]
    type = UCOElasticityTensor
    block = fuel
    temperature = temperature
  []
  [UCO_stress]
    type = ComputeFiniteStrainElasticStress
    block = fuel
  []
  [UCO_VolumetricSwellingEigenstrain]
    type = UCOVolumetricSwellingEigenstrain
    block = fuel
    eigenstrain_name = UCO_swelling_eigenstrain
  []
  [fuel_thermal_expansion]
    type = ComputeThermalExpansionEigenstrain
    block = fuel
    thermal_expansion_coeff = 10.0e-6
    temperature = temperature
    eigenstrain_name = UCO_TE_strain
  []
  [UCO_density]
    type = Density
    block = fuel
    density = 10966
  []
  [fission_gas_release]
    type = UCOFGR
    block = fuel
    average_grain_radius = 10e-6
    temperature = temperature
    triso_geometry = particle_geometry
    cutoff_neutron_flux = 0.0
  []
  [BAF_IPyC]
    type = BaconAnisotropyFactor
    initial_BAF = 1.0465
    block = IPyC
  []
  [BAF_OPyC]
    type = BaconAnisotropyFactor
    initial_BAF = 1.0429
    block = OPyC
  []
  [buffer_elasticity_tensor]
    type = BufferElasticityTensor
    block = buffer
    temperature = temperature
  []
  [buffer_stress]
    type = BufferCEGACreep
    block = buffer
    temperature = temperature
  []
  [buffer_thermal]
    type = BufferThermal
    block = buffer
    initial_density = 1050.0
  []
  [buffer_density]
    type = Density
    block = buffer
    density = 1050.0
  []
  [buffer_TE]
    type = BufferThermalExpansionEigenstrain
    block = buffer
    eigenstrain_name = Buffer_TE_strain
    temperature = temperature
  []
  [buffer_IIDC]
    type = BufferCEGAIrradiationEigenstrain
    block = buffer
    eigenstrain_name = Buffer_IIDC_strain
    temperature = temperature
  []
  [IPyC_elasticity_tensor]
    type = PyCElasticityTensor
    block = IPyC
    temperature = temperature
  []
  [IPyC_stress]
    type = PyCCEGACreep
    block = IPyC
    creep_rate_scale_factor = 1
    temperature = temperature
  []

  [IPyC_thermal]
    type = HeatConductionMaterial
    block = IPyC
    thermal_conductivity = 4.0
    specific_heat = 720.0
  []
  [IPyC_density]
    type = GenericConstantMaterial
    block = IPyC
    prop_names = 'density'
    prop_values = 1882
  []
  [normal_vectors_triso]
    type = NormalVectorsTRISO
    block = 'buffer IPyC OPyC'
  []
  [IPyC_IIDC]
    type = PyCCEGAIrradiationEigenstrain
    block = IPyC
    eigenstrain_name = IPyC_IIDC_strain
    temperature = temperature
    irradiation_eigenstrain_scale_factor = 1
  []
  [IPyC_TE]
    type = PyCThermalExpansionEigenstrain
    block = IPyC
    eigenstrain_name = IPyC_TE_strain
    temperature = temperature
  []
  [SiC_elasticity_tensor]
    type = MonolithicSiCElasticityTensor
    block = SiC
    temperature = temperature
    elastic_modulus_model = miller
  []
  [SiC_stress]
    type = ComputeMultipleInelasticStress
    inelastic_models = 'SiC_creep'
    tangent_operator = elastic
    block = SiC
  []
  [SiC_thermal]
    type = MonolithicSiCThermal
    block = SiC
    temperature = temperature
    thermal_conductivity_model = miller
  []
  [SiC_density]
    type = Density
    block = SiC
    density = 3171.0
  []
  [SiC_thermal_expansion]
    type = MonolithicSiCThermalExpansionEigenstrain
    block = SiC
    temperature = temperature
    stress_free_temperature = 298.0
    eigenstrain_name = SiC_thermal_eigenstrain
  []
  [SiC_creep]
    type = MonolithicSiCCreepUpdate
    block = SiC
    temperature = temperature
    k_function = k_function
  []
  [SiC_volumetric_swelling]
    type = MonolithicSiCVolumetricSwellingEigenstrain
    block = SiC
    temperature = temperature
    fast_neutron_fluence = fast_neutron_fluence
    eigenstrain_name = SiC_volumetric_swelling
  []
  [OPyC_elasticity_tensor]
    type = PyCElasticityTensor
    block = OPyC
    temperature = temperature
    initial_BAF = 1.0
  []
  [OPyC_stress]
    type = PyCCEGACreep
    block = OPyC
    creep_rate_scale_factor = 1
    temperature = temperature
  []
  [OPyC_thermal_conductivity]
    type = HeatConductionMaterial
    block = OPyC
    thermal_conductivity = 4.0
    specific_heat = 720.0
  []
  [OPyC_density]
    type = GenericConstantMaterial
    block = OPyC
    prop_names = 'density'
    prop_values = 1882
  []
  [OPyC_IIDC]
    type = PyCCEGAIrradiationEigenstrain
    block = OPyC
    eigenstrain_name = OPyC_IIDC_strain
    temperature = temperature
    irradiation_eigenstrain_scale_factor = 1
  []
  [OPyC_TE]
    type = PyCThermalExpansionEigenstrain
    block = OPyC
    eigenstrain_name = OPyC_TE_strain
    temperature = temperature
  []
  [characteristic_strength_SiC]
    type = GenericConstantMaterial
    prop_values = '9640000'
    block = SiC
    prop_names = 'characteristic_strength'
  []
  [characteristic_strength_PyC]
    type = PyCCharacteristicStrength
    temperature = temperature
    X = 1.02
    block = 'IPyC OPyC'
  []
[]

[Dampers]
  [temp]
    type = MaxIncrement
    variable = temperature
    max_increment = 100
  []
[]

[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]

[Executioner]
  type = Transient
  solve_type = 'PJFNK'

  petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
  petsc_options_value = 'lu superlu_dist'

  line_search = 'none'

  nl_rel_tol = 5e-6
  nl_abs_tol = 1e-8
  nl_max_its = 20

  l_tol = 1e-4
  l_max_its = 50

  start_time = 0.0
  end_time = '${end_time}'
  dt = 1e7
[]

[Postprocessors]
  [kernel_volume]
    type = InternalVolume
    boundary = fuel_outer_boundary
    execute_on = 'initial timestep_begin'
  []
  [frate_value]
    type = FunctionValuePostprocessor
    function = fission_rate
    execute_on = 'initial'
    indirect_dependencies = 'pdens_value'
  []
  [strain_opyc]
    type = ElementAverageValue
    variable = 'strain_xx'
    block = 'OPyC'
  []
  [strain_ipyc]
    type = ElementAverageValue
    variable = 'strain_xx'
    block = 'IPyC'
  []
  [strain_sic]
    type = ElementAverageValue
    variable = 'strain_xx'
    block = 'SiC'
  []
  [pres_sic_avg]
    type = ElementAverageValue
    variable = hydrostatic_stress
    block = 'SiC'
  []
  [pres_sic_max]
    type = ElementExtremeValue
    variable = hydrostatic_stress
    block = 'SiC'
  []
  [pres_sic_min]
    type = ElementExtremeValue
    variable = hydrostatic_stress
    value_type = min
    block = 'SiC'
  []
  [pres_ipyc_avg]
    type = ElementAverageValue
    variable = hydrostatic_stress
    block = 'IPyC'
  []
  [pres_ipyc_max]
    type = ElementExtremeValue
    variable = hydrostatic_stress
    block = 'IPyC'
  []
  [pres_ipyc_min]
    type = ElementExtremeValue
    variable = hydrostatic_stress
    value_type = min
    block = 'IPyC'
  []
  [pres_opyc_avg]
    type = ElementAverageValue
    variable = hydrostatic_stress
    block = 'OPyC'
  []
  [pres_opyc_max]
    type = ElementExtremeValue
    variable = hydrostatic_stress
    block = 'OPyC'
  []
  [pres_opyc_min]
    type = ElementExtremeValue
    variable = hydrostatic_stress
    value_type = min
    block = 'OPyC'
  []
  [stress_SiC_crackedIPyC]
    type = WeibullFailureOutputUsingCorrelation
    block = SiC
    weibull_modulus = 6
    stress_name = stress_yy
    high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
    stress_correlation_function = 'stress_correlation_crackedIPyC'
    output_type = 'stress'
  []
  [actual_strength_SiC_crackedIPyC]
    type = WeibullFailureOutputUsingCorrelation
    block = SiC
    weibull_modulus = 6
    stress_name = stress_yy
    high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
    stress_correlation_function = 'stress_correlation_crackedIPyC'
    output_type = 'strength'
  []
  [ave_gas_temp]
    type = ElementAverageValue
    block = buffer
    variable = temperature
    execute_on = 'initial timestep_end'
  []
  [fis_gas_released]
    type = ElementIntegralMaterialProperty
    mat_prop = fis_gas_released
    block = fuel
    use_displaced_mesh = false
    execute_on = 'initial timestep_end'
  []
  [gap_volume]
    type = InternalVolume
    boundary = buffer_IPyC_boundary
    execute_on = 'initial linear'
    use_displaced_mesh = true
  []
  [buffer_void_volume]
    type = VoidVolume
    block = buffer
    theoretical_density = 2250
    execute_on = 'initial timestep_end'
    use_displaced_mesh = true
  []
  [kernel_th_density]
    type = UCOTheoreticalDensity
    execute_on = initial
  []
  [kernel_void_volume]
    type = VoidVolume
    block = fuel
    theoretical_density = kernel_th_density
    execute_on = 'initial timestep_end'
    use_displaced_mesh = true
  []
  [particle_power]
    type = ElementIntegralPower
    variable = temperature
    use_material_fission_rate = true
    fission_rate_material = fission_rate
    block = fuel
    execute_on = 'initial timestep_end'
  []
  [max_fluence]
    type = ElementExtremeValue
    variable = fast_neutron_fluence
    value_type = 'max'
    execute_on = 'initial timestep_end'
  []
  [max_burnup]
    type = ElementExtremeValue
    variable = burnup
    block = fuel
    value_type = 'max'
    execute_on = 'initial timestep_end'
  []
  [SiC_stress]
    type = ElementExtremeMaterialProperty
    block = SiC
    value_type = min
    mat_prop = stress_yy
  []
  [IPyC_stress]
    type = ElementExtremeMaterialProperty
    block = IPyC
    value_type = min
    mat_prop = stress_yy
  []
  [OPyC_stress]
    type = ElementExtremeMaterialProperty
    block = OPyC
    value_type = min
    mat_prop = stress_yy
  []
  [strength_SiC]
    type = WeibullEffectiveMeanStrength
    block = SiC
    weibull_modulus = 6
  []
  [failure_indicator_SiC]
    type = WeibullFailureOutputUsingCorrelation
    block = SiC
    weibull_modulus = 6
    stress_name = stress_yy
    high_fidelity_analysis_strength = 'high_fidelity_strength_asphericity'
    stress_correlation_function = 'stress_correlation_asphericity'
    stress_change_correlation_function = 'stress_change_correlation_asphericity'
  []
  [strength_IPyC]
    type = WeibullEffectiveMeanStrength
    block = IPyC
    weibull_modulus = 9.5
  []
  [strength_OPyC]
    type = WeibullEffectiveMeanStrength
    block = OPyC
    weibull_modulus = 9.5
  []
  [failure_indicator_IPyC]
    type = WeibullFailureOutputUsingCorrelation
    block = IPyC
    weibull_modulus = 9.5
    stress_name = max_principal_stress
    effective_mean_strength = strength_IPyC
  []
  [failure_indicator_SiC_crackedIPyC]
    type = WeibullFailureOutputUsingCorrelation
    block = SiC
    weibull_modulus = 6
    stress_name = stress_yy
    high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
    stress_correlation_function = 'stress_correlation_crackedIPyC'
  []
  [sic_failure_overall]
    type = TRISOFailureEvaluation
    IPyC_failure = failure_indicator_IPyC
    SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
    SiC_failure = failure_indicator_SiC
    SiC_failure_pd_penetration = failure_indicator_pd_penetration
    SiC_failure_kernel_migration = failure_indicator_kernel_migration
    failure_type = SIC_FAILURE_OVERALL
  []
  [ipyc_cracking]
    type = TRISOFailureEvaluation
    IPyC_failure = failure_indicator_IPyC
    SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
    SiC_failure = failure_indicator_SiC
    failure_type = IPYC_CRACKING
  []
  [sic_failure_due_to_pressure]
    type = TRISOFailureEvaluation
    IPyC_failure = failure_indicator_IPyC
    SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
    SiC_failure = failure_indicator_SiC
    failure_type = SIC_FAILURE_DUE_TO_PRESSURE
  []
  [sic_failure_due_to_ipyc_cracking]
    type = TRISOFailureEvaluation
    IPyC_failure = failure_indicator_IPyC
    SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
    SiC_failure = failure_indicator_SiC
    failure_type = SIC_FAILURE_DUE_TO_IPYC_CRACKING
  []
  [fluence_at_failure]
    type = TRISOFailureOccurrenceStatus
    failure_evaluation = ipyc_cracking
    failure_information = max_fluence
  []
  [weibull_failure_probability_IPyC]
    type = WeibullFailureProbability
    block = IPyC
    weibull_modulus = 9.5
    characteristic_strength = characteristic_strength
  []
  [weibull_failure_probability_SiC]
    type = WeibullFailureProbability
    block = SiC
    weibull_modulus = 6
    characteristic_strength = characteristic_strength
  []
  [pd_penetration]
    type = PdPenetration
    boundary = SiC_inner_boundary
    variable = temperature
    execute_on = 'initial timestep_end'
  []
  [failure_indicator_pd_penetration]
    type = PdPenetrationFailureIndicator
    triso_geometry = particle_geometry
    pd_penetration = pd_penetration
  []
  [kernel_migration_distance]
    type = KernelMigrationDistance
    block = 'fuel buffer IPyC SiC OPyC'
    variable = temperature
    temperature_gradient = 15000
    kernel_type = UCO
  []
  [failure_indicator_kernel_migration]
    type = KernelMigrationFailureIndicator
    kernel_migration_distance = kernel_migration_distance
    triso_geometry = particle_geometry
  []
[]

[Outputs]
  print_linear_residuals = false
  csv = false
  exodus = false
  perf_graph = false
  print_linear_converged_reason = false
  print_nonlinear_converged_reason = false
[]
(microreactors/mrad/triso_failure/TRISO/triso_particle.i)

HP-MR Unit-Cell Multiphysics Simulation

The HP-MR multiphysics modeling setup is similar to the full-core model multiphysics setup.

Griffin Model

Griffin is used to govern the neutronics of the HP-MR as the parent application of the multiphysics simulation. A Monte Carlo Serpent-2 model has been setup to simulate the double heterogeneity of the HP-MR full core explicitly with the most recent ENDF/B-8.0 cross section data sets. This Monte Carlo model is used not only to provide reference solutions to the Griffin neutronics model for multiphysics simulations, but also to generate condensed multigroup cross sections for Griffin. In particular, multigroup cross sections were generated for each material zone by tallying the average reaction rates and group fluxes within that material region in Serpent-2 criticality calculations. Different sets of cross sections were prepared with fuel and moderator temperatures ( and ) assumed at 600 K, 700 K, 800 K, 1000 K and 1200 K respectively. These cross-section sets were then read by the ISOXML utility module in Griffin to create a bi-dimension cross section table which was used in the multiphysics coupled transient simulations. The DFEM-SN(1,3) neutronics solver with CMFD acceleration in Griffin is used in this model.

################################################################################
## NEAMS Micro-Reactor Application Driver                                     ##
## Heat Pipe Microreactor TRISO Failure Model                                 ##
## Assembly Model for Calculating TRISO Operating Conditions                  ##
## Griffin Main Application input file                                        ##
## DFEM-SN (1, 3) with CMFD acceleration                                      ##
################################################################################

mesh_subdomains = '1 2 3 4 5 6 7 8 101
                  102 103 104 105 106 107 108 109
                  110 111 112 113 114 115 116 117
                  118 119 120 121 122 123 124 125
                  126 127 128 129 130 131 132 201
                  202 203 204 205 206 207 208 209
                  210 211 212 213 214 215 216 217
                  218 219 220 221 222 223 224 225
                  226 227 228 229 230 231 232 401
                  402 403 404 405 406 407 408 409
                  410 411 412 413 414 415 416 417
                  418 419 420 421 422 423 424 425
                  426 427 428 429 430 431 432 501
                  502 503 504 505 506 507 508 509
                  510 511 512 513 514 515 516 517
                  518 519 520 521 522 523 524 525
                  526 527 528 529 530 531 532 301
                  302 303 304 305 306 307 308 309
                  310 311 312 313 314 315 316 317
                  318 319 320 321 322 323 324 325
                  326 327 328 329 330 331 332 333
                  334 335 336 601 602 603 604 605
                  606 607 608 609 610 611 612 613
                  614 615 616 617 618 619 620 621
                  622 623 624 625 626 627 628 629
                  630 631 632 633 634 635 636'

fuel_blocks = 'fuel_01 fuel_02 fuel_03 fuel_04 fuel_05 fuel_06 fuel_07 fuel_08
               fuel_09 fuel_10 fuel_11 fuel_12 fuel_13 fuel_14 fuel_15 fuel_16
               fuel_17 fuel_18 fuel_19 fuel_20 fuel_21 fuel_22 fuel_23 fuel_24
               fuel_25 fuel_26 fuel_27 fuel_28 fuel_29 fuel_30 fuel_31 fuel_32'

[Mesh]
  [loader]
    type = FileMeshGenerator
    file = ../mesh/3D_unit_cell_FY21_simple_YAN_40sections_5cm_axial_dist.e
  []
  [id]
    type = SubdomainExtraElementIDGenerator
    input = loader
    extra_element_id_names = 'material_id equivalence_id'
    subdomains = ${mesh_subdomains}
    extra_element_ids = '  805 805 805 805 805 805 805 805 801
                  801 801 801 801 801 801 801 801
                  801 801 801 801 801 801 801 801
                  801 801 801 801 801 801 801 801
                  801 801 801 801 801 801 801 802
                  802 802 802 802 802 802 802 802
                  802 802 802 802 802 802 802 802
                  802 802 802 802 802 802 802 802
                  802 802 802 802 802 802 802 803
                  803 803 803 803 803 803 803 803
                  803 803 803 803 803 803 803 803
                  803 803 803 803 803 803 803 803
                  803 803 803 803 803 803 803 816
                  816 816 816 816 816 816 816 816
                  816 816 816 816 816 816 816 816
                  816 816 816 816 816 816 816 816
                  816 816 816 816 816 816 816 815
                  815 815 815 815 815 815 815 815
                  815 815 815 815 815 815 815 815
                  815 815 815 815 815 815 815 815
                  815 815 815 815 815 815 815 815
                  815 815 815 817 817 817 817 817
                  817 817 817 817 817 817 817 817
                  817 817 817 817 817 817 817 817
                  817 817 817 817 817 817 817 817
                  817 817 817 817 817 817 817;
                  1 2 3 4 5 6 7 8 9
                  10 11 12 13 14 15 16 17
                  18 19 20 21 22 23 24 25
                  26 27 28 29 30 31 32 33
                  34 35 36 37 38 39 40 41
                  42 43 44 45 46 47 48 49
                  50 51 52 53 54 55 56 57
                  58 59 60 61 62 63 64 65
                  66 67 68 69 70 71 72 73
                  74 75 76 77 78 79 80 81
                  82 83 84 85 86 87 88 89
                  90 91 92 93 94 95 96 97
                  98 99 100 101 102 103 104 105
                  106 107 108 109 110 111 112 113
                  114 115 116 117 118 119 120 121
                  122 123 124 125 126 127 128 129
                  130 131 132 133 134 135 136 137
                  138 139 140 141 142 143 144 145
                  146 147 148 149 150 151 152 153
                  154 155 156 157 158 159 160 161
                  162 163 164 165 166 167 168 169
                  170 171 172 173 174 175 176 177
                  178 179 180 181 182 183 184 185
                  186 187 188 189 190 191 192 193
                  194 195 196 197 198 199 200 201
                  202 203 204 205 206 207 208'
  []
  [coarse_mesh]
    type = GeneratedMeshGenerator
    dim = 3
    nx = 6
    ny = 6
    nz = 20
    xmin = -0.23
    xmax = 0.23
    ymin = -0.23
    ymax = 0.23
    zmin = -0.05
    zmax = 1.95
  []
  [assign_coarse_id]
    type = CoarseMeshExtraElementIDGenerator
    input = id
    coarse_mesh = coarse_mesh
    extra_element_id_name = coarse_element_id
  []
[]

[AuxVariables]
  [Tf]
    initial_condition = 800
    order = CONSTANT
    family = MONOMIAL
  []

  [Tm]
    initial_condition = 800
    order = CONSTANT
    family = MONOMIAL
  []
  [layered_integral]
    order = CONSTANT
    family = MONOMIAL
    block = ${fuel_blocks}
  []
[]

[AuxKernels]
  [axial_power]
    type = SpatialUserObjectAux
    variable = layered_integral
    user_object = layered_integral
  []
[]

[TransportSystems]
  particle = neutron
  equation_type = eigenvalue

  G = 11
  VacuumBoundary = '1 8'
  ReflectingBoundary = '2'

  [SN]
    scheme = DFEM-SN
    family = MONOMIAL
    order = FIRST

    AQtype = Gauss-Chebyshev
    NPolar = 2
    NAzmthl = 3
    NA = 2
    n_delay_groups = 6

    sweep_type = asynchronous_parallel_sweeper
    using_array_variable = true
    collapse_scattering = true
    hide_angular_flux = true
  []
[]

[Executioner]
  type = SweepUpdate

  richardson_abs_tol = 1e-8
  richardson_rel_tol = 1e-8
  richardson_value = eigenvalue

  richardson_max_its = 1000
  inner_solve_type = GMRes
  max_inner_its = 20

  fixed_point_max_its = 1
  custom_pp = integrated_power
  custom_rel_tol = 1e-6
  force_fixed_point_solve = true

  cmfd_acceleration = true
  coarse_element_id = coarse_element_id
  diffusion_eigen_solver_type = newton
  prolongation_type = multiplicative
  max_diffusion_coefficient = 1
[]

[Materials]
  [all]
    # type=MixedMatIDNeutronicsMaterial
    type = CoupledFeedbackMatIDNeutronicsMaterial
    block = ${mesh_subdomains}
    library_file = '../ISOXML/unitcell_nogap_hom_G11_tr_no_900K.xml'
    library_name = 'unitcell_nogap_hom_G11_tr_no_900K'
    isotopes = 'pseudo'
    densities = '1.0'
    grid_names = 'Tfuel Tmod'
    grid_variables = 'Tf Tm'
    plus = 1
    is_meter = true
  []
[]

[PowerDensity]
  power = 1.8e3
  power_density_variable = power_density
  integrated_power_postprocessor = integrated_power
[]

[MultiApps]
  [bison_diff]
    type = FullSolveMultiApp
    app_type = BisonApp
    positions = '0.0 0.0 0.0' #bottom of the heat pipe
    input_files = 'MP_ss_bison.i'
    execute_on = 'timestep_end'
    keep_solution_during_restore = true
  []
[]

[Transfers]
  [to_sub_power_density]
    type = MultiAppProjectionTransfer
    from_multi_app = bison_diff
    variable = power_density
    source_variable = power_density
    execute_on = 'initial timestep_end'
    displaced_source_mesh = false
    displaced_target_mesh = false
    use_displaced_mesh = false
  []
  [from_sub_tempf]
    type = MultiAppGeometricInterpolationTransfer
    from_multi_app = bison_diff
    variable = Tf
    source_variable = Tfuel
    execute_on = 'initial timestep_end'
    num_points = 1 # interpolate with one point (~closest point)
    power = 0 # interpolate with constant function
  []
  [from_sub_tempm]
    type = MultiAppGeometricInterpolationTransfer
    from_multiapp = bison_diff
    variable = Tm
    source_variable = Tmod
    execute_on = 'initial timestep_end'
    num_points = 1 # interpolate with one point (~closest point)
    power = 0 # interpolate with constant function
  []
  [from_bison_hptemp]
    type = MultiAppPostprocessorTransfer
    from_multi_app = bison_diff
    from_postprocessor = heatpipe_surface_temp_avg
    to_postprocessor = hp_temp
    execute_on = 'initial timestep_end'
    reduction_type = average
  []
[]

[UserObjects]
  [layered_integral]
    type = LayeredIntegral
    direction = z
    num_layers = 100
    variable = power_density
    block = ${fuel_blocks}
  []
  [ss]
    type = TransportSolutionVectorFile
    transport_system = SN
    writing = true
    execute_on = final
  []
[]

[Postprocessors]
  [scaled_power_avg]
    type = ElementAverageValue
    block = ${fuel_blocks}
    variable = power_density
    execute_on = 'initial timestep_end'
  []
  [fuel_temp_avg]
    type = ElementAverageValue
    variable = Tf
    block = ${fuel_blocks}
    execute_on = 'initial timestep_end'
  []
  [fuel_temp_max]
    type = ElementExtremeValue
    value_type = max
    variable = Tf
    block = ${fuel_blocks}
    execute_on = 'initial timestep_end'
  []
  [fuel_temp_min]
    type = ElementExtremeValue
    value_type = min
    variable = Tf
    block = ${fuel_blocks}
    execute_on = 'initial timestep_end'
  []
  [hp_temp]
    type = Receiver
  []
  [hydro_stress]
    type = Receiver
  []
[]

[Debug]
  check_boundary_coverage = false
  print_block_volume = false
  show_actions = false
[]

[Outputs]
  csv = true
  perf_graph = true
  [console]
    type = Console
    outlier_variable_norms = false
  []
[]
(microreactors/mrad/triso_failure/UnitCell_with_TM/Exec_MP_ss_griffin.i)

BISON Model – Thermal Physics

BISON is used to simulate thermal physics of the HP-MR unit-cell a child application, as it is equipped with a comprehensive set of thermophysical properties of relevant nuclear materials, especially the TRISO-loaded graphite and 316SS. As the heat pipe behavior is simulated by Sockeye, the heat pipe blocks are removed from the mesh used by BISON. The thermal behavior of the rest of the HP-MR core is dominated by heat conduction. Convective boundary conditions were defined at the top and bottom of the model with an external temperature of 800 K and a heat transfer coefficient (HTC) of 100 W/m2•K.

This stage of the simulation is where temperature, power density, and hydrostatic stress data are reported in the /fuelsample subdirectory for use by the TRISO failure analysis BISON inputs. A single CSV output file is reported for each variable at each axial block, resulting in 96 CSV output files. These files are updated with a new row for every completed timestep.

################################################################################
## NEAMS Micro-Reactor Application Driver                                     ##
## Heat Pipe Microreactor TRISO Failure Model                                 ##
## Assembly Model for Calculating TRISO Operating Conditions                  ##
## Sockeye Grandchild Application for Heat Pipe Performance                   ##
################################################################################

# Total heat removed/added to heat pipe
Q_hp = 1800.

# Wick characteristics
R_pore = 15.0e-6
D_h_pore = '${fparse 2.0 * R_pore}'
permeability = 2e-9
porosity = 0.70

# Envelope ("env")
# SS316. Incropera & DeWitt, 3rd ed, Table A.1 @ 900K (627C)
# Density (kg/m3)
rho_env = 8238.
# Thermal conductivity (W/m-K)
k_env = 23.05
# Specific heat capacity (J/kg-K)
cp_env = 589.

# Potassium thermophysical properties determined using Sockeye's FluidPropertiesInterrogator.
# Using T = 800 K, p_sat = 6379 Pa
# Estimated saturated conditions by iteratively providing
# FluidPropertiesInterrogator with values of saturated density @ p_sat = 6379 Pa
# and checking that the resulting phase temperature was near 800K.
# Potassium vapor
# Density (kg/m3)
rho_vapor = 0.039
# Effective "super" conductivity (W/m-K)
# NOT from FluidPropertiesInterrogator
k_vapor = 1.30e6
# Specific heat capacity (J/kg-K)
cp_vapor = 1078.

# Potassium liquid
# Density (kg/m3)
rho_liquid = 720
# Thermal conductivity (W/m-K)
k_liquid = 37.03
# Specific heat capacity (J/kg-K)
cp_liquid = 786.
# Melting point, Table 3.1, lists 62C, rounding up
T_melting = 340.

# Wick, homogenize envelope and fluid
# Density (kg/m3)
rho_wick = '${fparse porosity * rho_liquid + (1.0 - porosity) * rho_env}'
# Thermal conductivity (W/m-K)
k_wick = '${fparse porosity * k_liquid + (1.0 - porosity) * k_env}'
# Specific heat capacity (J/kg-K)
# From Table 1.1, no temperature data given
cp_wick = '${fparse porosity * cp_liquid + (1.0 - porosity) * cp_env}'

# Elevations and lengths
length_evap = 180.0e-2
length_adia = 30.0e-2
length_cond = 90.0e-2

# Mesh density
# The dimensions are nicely divisible by 3 cm mesh.
nelem_evap = 180
nelem_adia = 30
nelem_cond = 90

# Envelope thickness
t_env = 0.08e-2
# Liquid annulus thickness
t_ann = 0.07e-2
# Wick thickness
t_wick = 0.1e-2

# Radial geometry
# Envelope outer
R_hp_o = 1.05e-2
D_hp_o = '${fparse 2.0 * R_hp_o}'
# Inner Envelope/outer annulus
R_hp_i = '${fparse R_hp_o - t_env}'
D_hp_i = '${fparse 2.0 * R_hp_i}'
# Inner annulus/wick outer
R_wick_o = '${fparse R_hp_i - t_ann}'
D_wick_o = '${fparse 2.0 * R_wick_o}'
# Inner wick/vapor core outer
R_wick_i = '${fparse R_wick_o - t_wick}'
D_wick_i = '${fparse 2.0 * R_wick_i}'

T_ext_cond = 800.
htc_ext_cond = 1.0e6

# Evaporator parameters
S_evap = '${fparse pi * D_hp_o * length_evap}'
q_evap = '${fparse Q_hp / S_evap}'

[GlobalParams]
  fp_2phase = fp_2phase
[]

[FluidProperties]
  [fp_2phase]
    type = PotassiumTwoPhaseFluidProperties
    emit_on_nan = none
  []
[]

[Components]
  [hp]
    type = HeatPipeConduction

    # Common to both HeatPipe2Phase and HeatPipeConduction
    position = '0 0 0'
    orientation = '0 0 1'
    length = '${length_evap} ${length_adia} ${length_cond}'
    n_elems = '${nelem_evap} ${nelem_adia} ${nelem_cond}'
    gravity_vector = '0 0 -9.8'
    D_wick_i = ${D_wick_i}
    D_wick_o = ${D_wick_o}
    D_clad_i = ${D_hp_i}
    R_pore = ${R_pore}
    porosity = ${porosity}
    permeability = ${permeability}

    # HeatPipeConduction only
    # Dimensions (for heat transfer & analytic limits)
    axial_region_names = 'evap adia cond'
    L_evap = ${length_evap}
    L_adia = ${length_adia}
    L_cond = ${length_cond}
    D_clad_o = ${D_hp_o}
    D_h_pore = ${D_h_pore}
    # Radial Mesh
    n_elems_clad = 4
    n_elems_wick = 8
    n_elems_core = 10
    # Thermal Propoerties
    sp_vapor = sp_vapor
    sp_liquid = sp_wick_ann
    sp_wick = sp_wick_ann
    sp_clad = sp_clad
    k_core = ${k_vapor}
    k_eff = ${k_wick}
    ##
    fp_2phase = fp_2phase
    evaporator_at_start_end = true
    # Initial temperature of block
    initial_T = ${T_ext_cond}
    T_ref = 1500
    T_ref_density = ${T_melting}
  []

  [condenser_boundary]
    type = HSBoundaryAmbientConvection
    boundary = 'hp:cond:outer'
    hs = hp
    T_ambient = ${T_ext_cond}
    htc_ambient = ${htc_ext_cond} #large value to approach an effective DirichletBC
    scale = 1.0
  []
  [evaporator_boundary]
    type = HSBoundaryExternalAppConvection
    boundary = 'hp:evap:outer'
    hs = hp
    T_ext = virtual_Text
    htc_ext = virtual_htc
  []
[]

[UserObjects]
  [surf_T]
    type = LayeredSideAverage
    direction = z
    num_layers = 100
    variable = T_solid
    boundary = 'hp:evap:outer'
  []
[]

[SolidProperties]
  [sp_vapor]
    type = ThermalFunctionSolidProperties
    rho = ${rho_vapor}
    cp = ${cp_vapor}
    k = ${k_vapor}
  []
  [sp_wick_ann]
    type = ThermalFunctionSolidProperties
    rho = ${rho_wick}
    cp = ${cp_wick}
    k = ${k_wick}
  []
  [sp_clad]
    type = ThermalFunctionSolidProperties
    rho = ${rho_env}
    cp = ${cp_env}
    k = ${k_env}
  []
[]

[AuxKernels]
  [hp_var]
    type = SpatialUserObjectAux
    variable = hp_temp_aux
    user_object = surf_T
  []
  [virtual_Text]
    type = ParsedAux
    variable = virtual_Text
    coupled_variables = 'T_solid master_flux virtual_htc'
    expression = 'master_flux/virtual_htc + T_solid'
  []
[]

[Functions]
  [scale_fcn]
    type = ParsedFunction
    symbol_names = 'catastrophic_pp recoverable_pp operational_pp'
    symbol_values = 'catastrophic_pp recoverable_pp operational_pp'
    expression = 'catastrophic_pp*recoverable_pp*operational_pp'
  []
[]

[AuxVariables]
  [T_wall_var]
    initial_condition = ${T_ext_cond}
  []
  [operational_aux]
    initial_condition = 1
  []
  [master_flux]
    initial_condition = ${q_evap}
  []
  [hp_temp_aux]
    initial_condition = ${T_ext_cond}
  []
  [virtual_Text]
    initial_condition = ${T_ext_cond}
  []
  [virtual_htc]
    initial_condition = 1.0
  []
[]

[Postprocessors]
  [Integral_BC_Total]
    type = SumPostprocessor
    values = 'condenser_boundary_integral evaporator_boundary_integral'
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [ZeroPP]
    type = EmptyPostprocessor
  []
  [Integral_BC_Cond]
    type = DifferencePostprocessor
    value1 = ZeroPP
    value2 = condenser_boundary_integral
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [Integral_BC_RelErr]
    type = RelativeDifferencePostprocessor
    value1 = evaporator_boundary_integral
    value2 = Integral_BC_Cond
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [operational_pp]
    type = ElementAverageValue
    variable = operational_aux
    execute_on = 'initial timestep_begin TIMESTEP_END'
  []
  [catastrophic_pp]
    type = HeatRemovalRateLimitScale
    heat_addition_pps = 'evaporator_boundary_integral'
    limit_condenser_side = false
    catastrophic_heat_removal_limit_pps = 'hp_boiling_limit hp_capillary_limit hp_entrainment_limit'
    recoverable_heat_removal_limit_pps = ''
    T = T_inner_avg
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [recoverable_pp]
    type = HeatRemovalRateLimitScale
    heat_addition_pps = 'evaporator_boundary_integral'
    limit_condenser_side = false
    catastrophic_heat_removal_limit_pps = ''
    recoverable_heat_removal_limit_pps = 'hp_sonic_limit hp_viscous_limit'
    T = T_inner_avg
    execute_on = 'INITIAL linear nonlinear TIMESTEP_END'
  []
  [T_evap_inner]
    type = NodalExtremeValue
    boundary = hp:evap:inner
    variable = T_solid
    execute_on = 'INITIAL TIMESTEP_END'
    value_type = max
  []
  [T_cond_inner]
    type = NodalExtremeValue
    boundary = hp:cond:inner
    variable = T_solid
    execute_on = 'INITIAL TIMESTEP_END'
    value_type = min
  []
  [T_evap_outer]
    type = NodalExtremeValue
    boundary = hp:evap:outer
    variable = T_solid
    execute_on = 'INITIAL TIMESTEP_END'
    value_type = max
  []
  [T_cond_outer]
    type = NodalExtremeValue
    boundary = hp:cond:outer
    variable = T_solid
    execute_on = 'INITIAL TIMESTEP_END'
    value_type = min
  []
  [T_wall_var_avg]
    type = ElementAverageValue
    variable = T_wall_var
    execute_on = 'Initial timestep_end'
  []
  [T_inner_avg]
    type = SideAverageValue
    variable = T_solid
    boundary = hp:inner
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [T_inner_max]
    type = NodalExtremeValue
    variable = T_solid
    boundary = hp:inner
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [T_inner_min]
    type = NodalExtremeValue
    variable = T_solid
    boundary = hp:inner
    execute_on = 'INITIAL TIMESTEP_END'
    value_type = min
  []
  [DT_outer]
    type = DifferencePostprocessor
    value1 = T_evap_outer
    value2 = T_cond_outer
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [DT_inner]
    type = DifferencePostprocessor
    value1 = T_evap_inner
    value2 = T_cond_inner
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [scale_pp]
    type = FunctionValuePostprocessor
    function = scale_fcn
  []
  [A_int_master_flux]
    type = SideIntegralVariablePostprocessor
    variable = master_flux
    boundary = 'hp:evap:inner'
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [A_int_T_ext]
    type = SideIntegralVariablePostprocessor
    variable = virtual_Text
    boundary = 'hp:evap:inner'
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [A_avg_T_aux]
    type = AverageNodalVariableValue
    variable = hp_temp_aux
    boundary = 'hp:evap:inner'
    execute_on = 'INITIAL TIMESTEP_END'
  []
[]

[VectorPostprocessors]
  [env_vpp]
    type = NodalValueSampler
    variable = T_solid
    block = 'hp:clad'
    sort_by = z
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [core_vpp]
    type = NodalValueSampler
    variable = T_solid
    block = 'hp:core'
    sort_by = z
    execute_on = 'INITIAL TIMESTEP_END'
  []
[]

[Preconditioning]
  [pc]
    type = SMP
    full = true
  []
[]

[Executioner]
  type = Transient

  solve_type = NEWTON
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  scheme = bdf2
  line_search = none

  nl_abs_tol = 1e-4
  nl_rel_tol = 1e-6
  nl_max_its = 15

  l_tol = 1e-3
  l_max_its = 10

  start_time = 0
  end_time = '${fparse 10 * 365.25 * 24 * 3600}'
  dtmin = 1e-6
  dt = 1e7
[]

[Outputs]
  [console]
    type = Console
    max_rows = 5
    execute_postprocessors_on = 'INITIAL FINAL FAILED'
  []
[]
(microreactors/mrad/triso_failure/UnitCell_with_TM/MP_ss_sockeye.i)

Sockeye Model

For the central heat pipe in the HP-MR unit-cell model, a Sockeye grandchild application is used to calculate its thermal performance. The effective thermal conductivity model, i.e., a 2D axisymmetric conduction model with a very high thermal conductivity of 2×105 W/m•K is applied to the vapor core. A heat flux boundary condition is applied to the exterior of the casing in the evaporator section, which is provided by the bulk conduction model. A convective boundary condition is applied to the exterior of the envelope in the condenser section, with an external temperature of 800 K and a heat transfer coefficient (HTC) of 106 W/m2•K (the value is intentionally set high to achieve an effective Dirichlet boundary condition).

################################################################################
## NEAMS Micro-Reactor Application Driver                                     ##
## Heat Pipe Microreactor TRISO Failure Model                                 ##
## Assembly Model for Calculating TRISO Operating Conditions                  ##
## BISON Child Application for Thermal Physics                                ##
################################################################################

num_sides = 36 # number of sides of heat pipe as a result of mesh polygonization
alpha = '${fparse 2 * pi / num_sides}'
perimeter_correction = '${fparse 0.5 * alpha / sin(0.5 * alpha)}' # polygonization correction factor for perimeter
# area_correction = ${fparse sqrt(alpha / sin(alpha))} # polygonization correction factor for area; this is not needed as mesh was not corrected for this.
area_correction = 1.0 # trivial value for non-corrected mesh
normal_factor = '${fparse perimeter_correction / area_correction}'

fuel_blocks = 'fuel_01 fuel_02 fuel_03 fuel_04 fuel_05 fuel_06 fuel_07 fuel_08
               fuel_09 fuel_10 fuel_11 fuel_12 fuel_13 fuel_14 fuel_15 fuel_16
               fuel_17 fuel_18 fuel_19 fuel_20 fuel_21 fuel_22 fuel_23 fuel_24
               fuel_25 fuel_26 fuel_27 fuel_28 fuel_29 fuel_30 fuel_31 fuel_32'

mono_blocks = 'monolith_01 monolith_02 monolith_03 monolith_04 monolith_05 monolith_06 monolith_07 monolith_08
               monolith_09 monolith_10 monolith_11 monolith_12 monolith_13 monolith_14 monolith_15 monolith_16
               monolith_17 monolith_18 monolith_19 monolith_20 monolith_21 monolith_22 monolith_23 monolith_24
               monolith_25 monolith_26 monolith_27 monolith_28 monolith_29 monolith_30 monolith_31 monolith_32'
hp_facing_blocks = 'monolith_01 monolith_02 monolith_03 monolith_04 monolith_05 monolith_06 monolith_07 monolith_08
                    monolith_09 monolith_10 monolith_11 monolith_12 monolith_13 monolith_14 monolith_15 monolith_16
                    monolith_17 monolith_18 monolith_19 monolith_20 monolith_21 monolith_22 monolith_23 monolith_24
                    monolith_25 monolith_26 monolith_27 monolith_28 monolith_29 monolith_30 monolith_31 monolith_32
                    top_reflector_1 top_reflector_2 top_reflector_3 top_reflector_4'
moderator_blocks = 'mod_01 mod_02 mod_03 mod_04 mod_05 mod_06 mod_07 mod_08
                    mod_09 mod_10 mod_11 mod_12 mod_13 mod_14 mod_15 mod_16
                    mod_17 mod_18 mod_19 mod_20 mod_21 mod_22 mod_23 mod_24
                    mod_25 mod_26 mod_27 mod_28 mod_29 mod_30 mod_31 mod_32'
mod_env_blocks = 'mod_envelope_01 mod_envelope_02 mod_envelope_03 mod_envelope_04 mod_envelope_05 mod_envelope_06 mod_envelope_07 mod_envelope_08
                  mod_envelope_09 mod_envelope_10 mod_envelope_11 mod_envelope_12 mod_envelope_13 mod_envelope_14 mod_envelope_15 mod_envelope_16
                  mod_envelope_17 mod_envelope_18 mod_envelope_19 mod_envelope_20 mod_envelope_21 mod_envelope_22 mod_envelope_23 mod_envelope_24
                  mod_envelope_25 mod_envelope_26 mod_envelope_27 mod_envelope_28 mod_envelope_29 mod_envelope_30 mod_envelope_31 mod_envelope_32'
non_fuel_blocks = 'monolith_01 monolith_02 monolith_03 monolith_04 monolith_05 monolith_06 monolith_07 monolith_08
                   monolith_09 monolith_10 monolith_11 monolith_12 monolith_13 monolith_14 monolith_15 monolith_16
                   monolith_17 monolith_18 monolith_19 monolith_20 monolith_21 monolith_22 monolith_23 monolith_24
                   monolith_25 monolith_26 monolith_27 monolith_28 monolith_29 monolith_30 monolith_31 monolith_32
                   mod_01 mod_02 mod_03 mod_04 mod_05 mod_06 mod_07 mod_08
                   mod_09 mod_10 mod_11 mod_12 mod_13 mod_14 mod_15 mod_16
                   mod_17 mod_18 mod_19 mod_20 mod_21 mod_22 mod_23 mod_24
                   mod_25 mod_26 mod_27 mod_28 mod_29 mod_30 mod_31 mod_32
                   mod_envelope_01 mod_envelope_02 mod_envelope_03 mod_envelope_04 mod_envelope_05 mod_envelope_06 mod_envelope_07 mod_envelope_08
                   mod_envelope_09 mod_envelope_10 mod_envelope_11 mod_envelope_12 mod_envelope_13 mod_envelope_14 mod_envelope_15 mod_envelope_16
                   mod_envelope_17 mod_envelope_18 mod_envelope_19 mod_envelope_20 mod_envelope_21 mod_envelope_22 mod_envelope_23 mod_envelope_24
                   mod_envelope_25 mod_envelope_26 mod_envelope_27 mod_envelope_28 mod_envelope_29 mod_envelope_30 mod_envelope_31 mod_envelope_32
                   top_reflector_1 top_reflector_2 top_reflector_3 top_reflector_4
                   bottom_reflector_1 bottom_reflector_2 bottom_reflector_3 bottom_reflector_4'
non_mod_blocks = 'monolith_01 monolith_02 monolith_03 monolith_04 monolith_05 monolith_06 monolith_07 monolith_08
                  monolith_09 monolith_10 monolith_11 monolith_12 monolith_13 monolith_14 monolith_15 monolith_16
                  monolith_17 monolith_18 monolith_19 monolith_20 monolith_21 monolith_22 monolith_23 monolith_24
                  monolith_25 monolith_26 monolith_27 monolith_28 monolith_29 monolith_30 monolith_31 monolith_32
                  fuel_01 fuel_02 fuel_03 fuel_04 fuel_05 fuel_06 fuel_07 fuel_08
                  fuel_09 fuel_10 fuel_11 fuel_12 fuel_13 fuel_14 fuel_15 fuel_16
                  fuel_17 fuel_18 fuel_19 fuel_20 fuel_21 fuel_22 fuel_23 fuel_24
                  fuel_25 fuel_26 fuel_27 fuel_28 fuel_29 fuel_30 fuel_31 fuel_32
                  mod_envelope_01 mod_envelope_02 mod_envelope_03 mod_envelope_04 mod_envelope_05 mod_envelope_06 mod_envelope_07 mod_envelope_08
                  mod_envelope_09 mod_envelope_10 mod_envelope_11 mod_envelope_12 mod_envelope_13 mod_envelope_14 mod_envelope_15 mod_envelope_16
                  mod_envelope_17 mod_envelope_18 mod_envelope_19 mod_envelope_20 mod_envelope_21 mod_envelope_22 mod_envelope_23 mod_envelope_24
                  mod_envelope_25 mod_envelope_26 mod_envelope_27 mod_envelope_28 mod_envelope_29 mod_envelope_30 mod_envelope_31 mod_envelope_32
                  top_reflector_1 top_reflector_2 top_reflector_3 top_reflector_4
                  bottom_reflector_1 bottom_reflector_2 bottom_reflector_3 bottom_reflector_4'
hp_surfs = 'HP_surf'

[GlobalParams]
  flux_conversion_factor = 1
[]

[Mesh]
  file = ../mesh/3D_unit_cell_FY21_simple_YAN_40sections_5cm_axial_dist_bison.e
[]

[Variables]
  [temp]
    initial_condition = 800
  []
[]

[Kernels]
  [heat_conduction]
    type = HeatConduction
    variable = temp
  []
  [heat_ie]
    type = HeatConductionTimeDerivative
    variable = temp
  []
  [heat_source_fuel]
    type = CoupledForce
    variable = temp
    block = ${fuel_blocks}
    v = power_density
  []
[]

[AuxVariables]
  [power_density]
    block = ${fuel_blocks}
    family = L2_LAGRANGE
    order = FIRST
    #initial_condition = 4e6 #only used for standalone testing
  []
  [Tfuel]
    # block = ${fuel_blocks}
    order = CONSTANT
    family = MONOMIAL
  []
  [Tmod]
    # block = ${moderator_blocks}
  []
  [hp_temp_aux]
    block = ${hp_facing_blocks}
  []
  [flux_uo] #auxvariable to hold heat pipe surface flux from UserObject
    order = CONSTANT
    family = MONOMIAL
  []
  [disp_x]
  []
  [disp_y]
  []
  [disp_z]
  []
[]

[AuxKernels]
  [assign_tfuel_in_fuel]
    type = NormalizationAux
    variable = Tfuel
    source_variable = temp
    execute_on = 'timestep_end'
    block = ${fuel_blocks}
  []
  [assign_tfuel_in_nonfuel]
    type = SpatialUserObjectAux
    variable = Tfuel
    user_object = avg_fuel_temp
    execute_on = 'timestep_end'
    block = ${non_fuel_blocks}
  []
  [assign_tmod_in_mod]
    type = NormalizationAux
    variable = Tmod
    source_variable = temp
    execute_on = 'timestep_end'
    block = ${moderator_blocks}
  []
  [assign_tmod_in_nonmod]
    type = SpatialUserObjectAux
    variable = Tmod
    user_object = avg_mod_temp
    execute_on = 'timestep_end'
    block = ${non_mod_blocks}
  []
  [flux_uo]
    type = SpatialUserObjectAux
    variable = flux_uo
    user_object = flux_uo
  []
[]

[BCs]
  [outside_bc]
    type = ConvectiveFluxFunction # (Robin BC)
    variable = temp
    boundary = 'top bottom'
    coefficient = 100 # W/K/m^2
    T_infinity = 800 # K air temperature at the top of the core 800
  []
  [hp_temp]
    type = CoupledConvectiveHeatFluxBC
    boundary = ${hp_surfs}
    variable = temp
    T_infinity = hp_temp_aux
    htc = 750 #air gap k=0.15 W/mK, th=0.0002 m
  []
[]

[Materials]
  [fuel_matrix_thermal]
    type = GraphiteMatrixThermal
    block = ${fuel_blocks}
    packing_fraction = 0.4
    specific_heat_scale_factor = 1.0
    thermal_conductivity_scale_factor = 1.0
    graphite_grade = IG_110
    fast_neutron_fluence = 0 #6.75E+24 # this value is neutron fluence over 0.1MeV
    temperature = temp
  []
  [monolith_matrix_thermal]
    type = GraphiteMatrixThermal
    block = ${mono_blocks}
    packing_fraction = 0
    specific_heat_scale_factor = 1.0
    thermal_conductivity_scale_factor = 1.0
    graphite_grade = IG_110
    fast_neutron_fluence = 0 #6.75E+24 # this value is neutron fluence over 0.1MeV
    temperature = temp
  []
  [normalized_matrix_conductivity]
    type = ParsedMaterial
    expression = 'thermal_conductivity/nf'
    property_name = normalized_matrix_conductivity
    block = ${mono_blocks}
    material_property_names = thermal_conductivity
    constant_names = nf
    constant_expressions = '${normal_factor}'
  []
  [moderator_thermal]
    type = HeatConductionMaterial
    block = ${moderator_blocks}
    temp = temp
    thermal_conductivity = 20 # W/m/K
    specific_heat = 500 # random value
  []
  [SS_envelop_pipes_thermal]
    type = HeatConductionMaterial
    block = ${mod_env_blocks}
    thermal_conductivity = 13.8 # W/m/K at 300k
    specific_heat = 482.9 # at 300k
  []
  [axial_reflector_thermal]
    type = HeatConductionMaterial
    block = 'top_reflector_1 top_reflector_2 top_reflector_3 top_reflector_4
             bottom_reflector_1 bottom_reflector_2 bottom_reflector_3 bottom_reflector_4'
    temp = temp
    thermal_conductivity = 199 # W/m/K
    specific_heat = 1867 # random value
  []
  [fuel_density]
    type = Density
    block = ${fuel_blocks}
    density = 2276.5
  []
  [moderator_density]
    type = Density
    block = ${moderator_blocks}
    density = 4.3e3
  []
  [monolith_density]
    type = Density
    block = ${mono_blocks}
    density = 1806
  []
  [SS_Envelop_density]
    type = Density
    block = ${mod_env_blocks}
    density = 7950
  []
  [axial_reflector_density]
    type = Density
    block = 'top_reflector_1 top_reflector_2 top_reflector_3 top_reflector_4
             bottom_reflector_1 bottom_reflector_2 bottom_reflector_3 bottom_reflector_4'
    density = 1848
  []
[]

[MultiApps]
  [sockeye]
    type = TransientMultiApp
    app_type = SockeyeApp
    positions = '0.0 0.0 0.15' #bottom of the heat pipe
    input_files = 'MP_ss_sockeye.i'
    execute_on = 'timestep_begin' # execute on timestep begin because hard to have a good initial guess on heat flux
    max_procs_per_app = 1
    sub_cycling = true
  []
  [bison_TM]
    type = TransientMultiApp
    app_type = BisonApp
    positions = '0.0 0.0 0.0' #bottom of the heat pipe
    input_files = 'MP_ss_bison_TM.i'
    execute_on = 'timestep_begin'
  []
[]

[Transfers]
  [from_sockeye_temp]
    type = MultiAppGeneralFieldNearestLocationTransfer
    from_multi_app = sockeye
    source_variable = hp_temp_aux
    variable = hp_temp_aux
    execute_on = 'timestep_begin'

    # Reduces transfers efficiency for now, can be removed once transferred fields are checked
    bbox_factor = 10
  []
  [to_sockeye_flux]
    type = MultiAppGeneralFieldNearestLocationTransfer
    to_multi_app = sockeye
    source_variable = flux_uo
    variable = master_flux
    execute_on = 'timestep_begin'
    # Reduces transfers efficiency for now, can be removed once transferred fields are checked
    bbox_factor = 10
  []
  [from_bison_TM_dispx]
    type = MultiAppGeometricInterpolationTransfer
    from_multi_app = bison_TM
    variable = disp_x
    source_variable = disp_x
    execute_on = 'timestep_begin'
    power = 0
    num_points = 1
  []
  [from_bison_TM_dispy]
    type = MultiAppGeometricInterpolationTransfer
    from_multi_app = bison_TM
    variable = disp_y
    source_variable = disp_y
    execute_on = 'timestep_begin'
    power = 0
    num_points = 1
  []
  [from_bison_TM_dispz]
    type = MultiAppGeometricInterpolationTransfer
    from_multi_app = bison_TM
    variable = disp_z
    source_variable = disp_z
    execute_on = 'timestep_begin'
    power = 0
    num_points = 1
  []
  [to_bison_TM_temp]
    type = MultiAppGeometricInterpolationTransfer
    to_multi_app = bison_TM
    variable = temp
    source_variable = temp
    execute_on = 'timestep_begin'
    power = 0
    num_points = 1
  []
  [axial_pressure_1]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_1
    to_postprocessor = axial_pressure_1
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_2]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_2
    to_postprocessor = axial_pressure_2
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_3]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_3
    to_postprocessor = axial_pressure_3
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_4]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_4
    to_postprocessor = axial_pressure_4
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_5]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_5
    to_postprocessor = axial_pressure_5
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_6]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_6
    to_postprocessor = axial_pressure_6
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_7]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_7
    to_postprocessor = axial_pressure_7
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_8]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_8
    to_postprocessor = axial_pressure_8
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_9]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_9
    to_postprocessor = axial_pressure_9
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_10]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_10
    to_postprocessor = axial_pressure_10
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_11]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_11
    to_postprocessor = axial_pressure_11
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_12]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_12
    to_postprocessor = axial_pressure_12
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_13]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_13
    to_postprocessor = axial_pressure_13
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_14]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_14
    to_postprocessor = axial_pressure_14
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_15]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_15
    to_postprocessor = axial_pressure_15
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_16]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_16
    to_postprocessor = axial_pressure_16
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_17]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_17
    to_postprocessor = axial_pressure_17
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_18]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_18
    to_postprocessor = axial_pressure_18
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_19]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_19
    to_postprocessor = axial_pressure_19
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_20]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_20
    to_postprocessor = axial_pressure_20
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_21]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_21
    to_postprocessor = axial_pressure_21
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_22]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_22
    to_postprocessor = axial_pressure_22
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_23]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_23
    to_postprocessor = axial_pressure_23
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_24]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_24
    to_postprocessor = axial_pressure_24
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_25]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_25
    to_postprocessor = axial_pressure_25
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_26]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_26
    to_postprocessor = axial_pressure_26
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_27]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_27
    to_postprocessor = axial_pressure_27
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_28]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_28
    to_postprocessor = axial_pressure_28
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_29]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_29
    to_postprocessor = axial_pressure_29
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_30]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_30
    to_postprocessor = axial_pressure_30
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_31]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_31
    to_postprocessor = axial_pressure_31
    execute_on = 'initial timestep_begin'
  []
  [axial_pressure_32]
    type = MultiAppPostprocessorTransfer
    reduction_type = average
    from_multi_app = bison_TM
    from_postprocessor = axial_pressure_32
    to_postprocessor = axial_pressure_32
    execute_on = 'initial timestep_begin'
  []
[]

[UserObjects]
  [flux_uo]
    type = LayeredSideDiffusiveFluxAverage
    direction = z
    num_layers = 100
    variable = temp
    diffusivity = normalized_matrix_conductivity
    execute_on = linear
    boundary = ${hp_surfs}
  []
  [avg_fuel_temp]
    type = LayeredAverage
    direction = z
    num_layers = 100
    variable = temp
    block = ${fuel_blocks}
  []
  [avg_mod_temp]
    type = LayeredAverage
    direction = z
    num_layers = 100
    variable = temp
    block = ${moderator_blocks}
  []
[]

[Executioner]
  type = Transient

  petsc_options = '-snes_ksp_ew'
  petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
  petsc_options_value = 'lu       superlu_dist                  51'
  line_search = 'none'

  nl_abs_tol = 1e-7
  nl_rel_tol = 1e-7

  nl_max_its = 20
  fixed_point_max_its = 1

  start_time = 0
  end_time = '${fparse 10 * 365.25 * 24 * 3600}'
  dtmin = 1e-6
  dt = 1e7
[]

[Postprocessors]
  [hp_heat_integral]
    type = SideDiffusiveFluxIntegral
    variable = temp
    boundary = ${hp_surfs}
    diffusivity = normalized_matrix_conductivity
    execute_on = 'initial timestep_end'
    outputs = none
  []
  [topbottom_heat_integral]
    type = SideDiffusiveFluxIntegral
    variable = temp
    boundary = 'top bottom'
    diffusivity = 199 #TC of reflector
    execute_on = 'initial timestep_end'
    outputs = none
  []
  [total_heat_integral]
    type = LinearCombinationPostprocessor
    pp_names = 'hp_heat_integral topbottom_heat_integral'
    pp_coefs = '1 1'
    outputs = none
  []
  [fuel_temp_avg]
    type = ElementAverageValue
    variable = temp
    block = ${fuel_blocks}
    outputs = none
  []
  [fuel_temp_max]
    type = ElementExtremeValue
    variable = temp
    block = ${fuel_blocks}
    outputs = none
  []
  [fuel_temp_min]
    type = ElementExtremeValue
    variable = temp
    block = ${fuel_blocks}
    value_type = min
    outputs = none
  []
  [mod_temp_avg]
    type = ElementAverageValue
    variable = temp
    block = ${moderator_blocks}
    outputs = none
  []
  [mod_temp_max]
    type = ElementExtremeValue
    variable = temp
    block = ${moderator_blocks}
    outputs = none
  []
  [mod_temp_min]
    type = ElementExtremeValue
    variable = temp
    block = ${moderator_blocks}
    value_type = min
    outputs = none
  []
  [monolith_temp_avg]
    type = ElementAverageValue
    variable = temp
    block = ${mono_blocks}
    outputs = none
  []
  [monolith_temp_max]
    type = ElementExtremeValue
    variable = temp
    block = ${mono_blocks}
    outputs = none
  []
  [monolith_temp_min]
    type = ElementExtremeValue
    variable = temp
    block = ${mono_blocks}
    value_type = min
    outputs = none
  []
  [heatpipe_surface_temp_avg]
    type = SideAverageValue
    variable = temp
    boundary = ${hp_surfs}
    outputs = none
  []
  [power_density]
    type = ElementIntegralVariablePostprocessor
    block = ${fuel_blocks}
    variable = power_density
    execute_on = 'initial timestep_end'
    outputs = none
  []
  [axial_temp_1]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_01
    outputs = 'pp_fuelsampler_temp_1'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_1]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_01
    outputs = 'pp_fuelsampler_pow_1'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_2]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_02
    outputs = 'pp_fuelsampler_temp_2'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_2]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_02
    outputs = 'pp_fuelsampler_pow_2'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_3]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_03
    outputs = 'pp_fuelsampler_temp_3'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_3]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_03
    outputs = 'pp_fuelsampler_pow_3'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_4]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_04
    outputs = 'pp_fuelsampler_temp_4'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_4]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_04
    outputs = 'pp_fuelsampler_pow_4'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_5]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_05
    outputs = 'pp_fuelsampler_temp_5'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_5]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_05
    outputs = 'pp_fuelsampler_pow_5'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_6]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_06
    outputs = 'pp_fuelsampler_temp_6'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_6]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_06
    outputs = 'pp_fuelsampler_pow_6'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_7]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_07
    outputs = 'pp_fuelsampler_temp_7'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_7]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_07
    outputs = 'pp_fuelsampler_pow_7'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_8]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_08
    outputs = 'pp_fuelsampler_temp_8'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_8]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_08
    outputs = 'pp_fuelsampler_pow_8'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_9]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_09
    outputs = 'pp_fuelsampler_temp_9'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_9]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_09
    outputs = 'pp_fuelsampler_pow_9'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_10]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_10
    outputs = 'pp_fuelsampler_temp_10'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_10]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_10
    outputs = 'pp_fuelsampler_pow_10'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_11]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_11
    outputs = 'pp_fuelsampler_temp_11'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_11]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_11
    outputs = 'pp_fuelsampler_pow_11'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_12]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_12
    outputs = 'pp_fuelsampler_temp_12'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_12]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_12
    outputs = 'pp_fuelsampler_pow_12'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_13]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_13
    outputs = 'pp_fuelsampler_temp_13'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_13]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_13
    outputs = 'pp_fuelsampler_pow_13'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_14]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_14
    outputs = 'pp_fuelsampler_temp_14'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_14]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_14
    outputs = 'pp_fuelsampler_pow_14'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_15]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_15
    outputs = 'pp_fuelsampler_temp_15'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_15]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_15
    outputs = 'pp_fuelsampler_pow_15'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_16]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_16
    outputs = 'pp_fuelsampler_temp_16'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_16]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_16
    outputs = 'pp_fuelsampler_pow_16'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_17]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_17
    outputs = 'pp_fuelsampler_temp_17'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_17]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_17
    outputs = 'pp_fuelsampler_pow_17'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_18]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_18
    outputs = 'pp_fuelsampler_temp_18'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_18]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_18
    outputs = 'pp_fuelsampler_pow_18'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_19]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_19
    outputs = 'pp_fuelsampler_temp_19'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_19]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_19
    outputs = 'pp_fuelsampler_pow_19'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_20]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_20
    outputs = 'pp_fuelsampler_temp_20'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_20]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_20
    outputs = 'pp_fuelsampler_pow_20'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_21]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_21
    outputs = 'pp_fuelsampler_temp_21'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_21]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_21
    outputs = 'pp_fuelsampler_pow_21'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_22]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_22
    outputs = 'pp_fuelsampler_temp_22'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_22]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_22
    outputs = 'pp_fuelsampler_pow_22'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_23]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_23
    outputs = 'pp_fuelsampler_temp_23'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_23]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_23
    outputs = 'pp_fuelsampler_pow_23'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_24]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_24
    outputs = 'pp_fuelsampler_temp_24'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_24]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_24
    outputs = 'pp_fuelsampler_pow_24'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_25]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_25
    outputs = 'pp_fuelsampler_temp_25'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_25]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_25
    outputs = 'pp_fuelsampler_pow_25'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_26]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_26
    outputs = 'pp_fuelsampler_temp_26'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_26]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_26
    outputs = 'pp_fuelsampler_pow_26'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_27]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_27
    outputs = 'pp_fuelsampler_temp_27'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_27]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_27
    outputs = 'pp_fuelsampler_pow_27'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_28]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_28
    outputs = 'pp_fuelsampler_temp_28'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_28]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_28
    outputs = 'pp_fuelsampler_pow_28'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_29]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_29
    outputs = 'pp_fuelsampler_temp_29'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_29]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_29
    outputs = 'pp_fuelsampler_pow_29'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_30]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_30
    outputs = 'pp_fuelsampler_temp_30'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_30]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_30
    outputs = 'pp_fuelsampler_pow_30'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_31]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_31
    outputs = 'pp_fuelsampler_temp_31'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_31]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_31
    outputs = 'pp_fuelsampler_pow_31'
    execute_on = 'initial timestep_end'
  []
  [axial_temp_32]
    type = ElementAverageValue
    variable = 'Tfuel'
    block = fuel_32
    outputs = 'pp_fuelsampler_temp_32'
    execute_on = 'initial timestep_end'
  []
  [axial_pow_32]
    type = ElementAverageValue
    variable = 'power_density'
    block = fuel_32
    outputs = 'pp_fuelsampler_pow_32'
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_1]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_1'
  []
  [axial_pressure_2]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_2'
  []
  [axial_pressure_3]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_3'
  []
  [axial_pressure_4]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_4'
  []
  [axial_pressure_5]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_5'
  []
  [axial_pressure_6]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_6'
  []
  [axial_pressure_7]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_7'
  []
  [axial_pressure_8]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_8'
  []
  [axial_pressure_9]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_9'
  []
  [axial_pressure_10]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_10'
  []
  [axial_pressure_11]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_11'
  []
  [axial_pressure_12]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_12'
  []
  [axial_pressure_13]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_13'
  []
  [axial_pressure_14]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_14'
  []
  [axial_pressure_15]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_15'
  []
  [axial_pressure_16]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_16'
  []
  [axial_pressure_17]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_17'
  []
  [axial_pressure_18]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_18'
  []
  [axial_pressure_19]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_19'
  []
  [axial_pressure_20]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_20'
  []
  [axial_pressure_21]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_21'
  []
  [axial_pressure_22]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_22'
  []
  [axial_pressure_23]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_23'
  []
  [axial_pressure_24]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_24'
  []
  [axial_pressure_25]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_25'
  []
  [axial_pressure_26]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_26'
  []
  [axial_pressure_27]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_27'
  []
  [axial_pressure_28]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_28'
  []
  [axial_pressure_29]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_29'
  []
  [axial_pressure_30]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_30'
  []
  [axial_pressure_31]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_31'
  []
  [axial_pressure_32]
    type = Receiver
    outputs = 'pp_fuelsampler_pressure_32'
  []
[]

[Outputs]
  perf_graph = true
  color = true
  # checkpoint = true
  # exodus = true
  # csv=false
  [pp_fuelsampler_temp_1]
    type = CSV
    file_base = 'fuelsample/tempdata1'
  []
  [pp_fuelsampler_pow_1]
    type = CSV
    file_base = 'fuelsample/powdata1'
  []
  [pp_fuelsampler_temp_2]
    type = CSV
    file_base = 'fuelsample/tempdata2'
  []
  [pp_fuelsampler_pow_2]
    type = CSV
    file_base = 'fuelsample/powdata2'
  []
  [pp_fuelsampler_temp_3]
    type = CSV
    file_base = 'fuelsample/tempdata3'
  []
  [pp_fuelsampler_pow_3]
    type = CSV
    file_base = 'fuelsample/powdata3'
  []
  [pp_fuelsampler_temp_4]
    type = CSV
    file_base = 'fuelsample/tempdata4'
  []
  [pp_fuelsampler_pow_4]
    type = CSV
    file_base = 'fuelsample/powdata4'
  []
  [pp_fuelsampler_temp_5]
    type = CSV
    file_base = 'fuelsample/tempdata5'
  []
  [pp_fuelsampler_pow_5]
    type = CSV
    file_base = 'fuelsample/powdata5'
  []
  [pp_fuelsampler_temp_6]
    type = CSV
    file_base = 'fuelsample/tempdata6'
  []
  [pp_fuelsampler_pow_6]
    type = CSV
    file_base = 'fuelsample/powdata6'
  []
  [pp_fuelsampler_temp_7]
    type = CSV
    file_base = 'fuelsample/tempdata7'
  []
  [pp_fuelsampler_pow_7]
    type = CSV
    file_base = 'fuelsample/powdata7'
  []
  [pp_fuelsampler_temp_8]
    type = CSV
    file_base = 'fuelsample/tempdata8'
  []
  [pp_fuelsampler_pow_8]
    type = CSV
    file_base = 'fuelsample/powdata8'
  []
  [pp_fuelsampler_temp_9]
    type = CSV
    file_base = 'fuelsample/tempdata9'
  []
  [pp_fuelsampler_pow_9]
    type = CSV
    file_base = 'fuelsample/powdata9'
  []
  [pp_fuelsampler_temp_10]
    type = CSV
    file_base = 'fuelsample/tempdata10'
  []
  [pp_fuelsampler_pow_10]
    type = CSV
    file_base = 'fuelsample/powdata10'
  []
  [pp_fuelsampler_temp_11]
    type = CSV
    file_base = 'fuelsample/tempdata11'
  []
  [pp_fuelsampler_pow_11]
    type = CSV
    file_base = 'fuelsample/powdata11'
  []
  [pp_fuelsampler_temp_12]
    type = CSV
    file_base = 'fuelsample/tempdata12'
  []
  [pp_fuelsampler_pow_12]
    type = CSV
    file_base = 'fuelsample/powdata12'
  []
  [pp_fuelsampler_temp_13]
    type = CSV
    file_base = 'fuelsample/tempdata13'
  []
  [pp_fuelsampler_pow_13]
    type = CSV
    file_base = 'fuelsample/powdata13'
  []
  [pp_fuelsampler_temp_14]
    type = CSV
    file_base = 'fuelsample/tempdata14'
  []
  [pp_fuelsampler_pow_14]
    type = CSV
    file_base = 'fuelsample/powdata14'
  []
  [pp_fuelsampler_temp_15]
    type = CSV
    file_base = 'fuelsample/tempdata15'
  []
  [pp_fuelsampler_pow_15]
    type = CSV
    file_base = 'fuelsample/powdata15'
  []
  [pp_fuelsampler_temp_16]
    type = CSV
    file_base = 'fuelsample/tempdata16'
  []
  [pp_fuelsampler_pow_16]
    type = CSV
    file_base = 'fuelsample/powdata16'
  []
  [pp_fuelsampler_temp_17]
    type = CSV
    file_base = 'fuelsample/tempdata17'
  []
  [pp_fuelsampler_pow_17]
    type = CSV
    file_base = 'fuelsample/powdata17'
  []
  [pp_fuelsampler_temp_18]
    type = CSV
    file_base = 'fuelsample/tempdata18'
  []
  [pp_fuelsampler_pow_18]
    type = CSV
    file_base = 'fuelsample/powdata18'
  []
  [pp_fuelsampler_temp_19]
    type = CSV
    file_base = 'fuelsample/tempdata19'
  []
  [pp_fuelsampler_pow_19]
    type = CSV
    file_base = 'fuelsample/powdata19'
  []
  [pp_fuelsampler_temp_20]
    type = CSV
    file_base = 'fuelsample/tempdata20'
  []
  [pp_fuelsampler_pow_20]
    type = CSV
    file_base = 'fuelsample/powdata20'
  []
  [pp_fuelsampler_temp_21]
    type = CSV
    file_base = 'fuelsample/tempdata21'
  []
  [pp_fuelsampler_pow_21]
    type = CSV
    file_base = 'fuelsample/powdata21'
  []
  [pp_fuelsampler_temp_22]
    type = CSV
    file_base = 'fuelsample/tempdata22'
  []
  [pp_fuelsampler_pow_22]
    type = CSV
    file_base = 'fuelsample/powdata22'
  []
  [pp_fuelsampler_temp_23]
    type = CSV
    file_base = 'fuelsample/tempdata23'
  []
  [pp_fuelsampler_pow_23]
    type = CSV
    file_base = 'fuelsample/powdata23'
  []
  [pp_fuelsampler_temp_24]
    type = CSV
    file_base = 'fuelsample/tempdata24'
  []
  [pp_fuelsampler_pow_24]
    type = CSV
    file_base = 'fuelsample/powdata24'
  []
  [pp_fuelsampler_temp_25]
    type = CSV
    file_base = 'fuelsample/tempdata25'
  []
  [pp_fuelsampler_pow_25]
    type = CSV
    file_base = 'fuelsample/powdata25'
  []
  [pp_fuelsampler_temp_26]
    type = CSV
    file_base = 'fuelsample/tempdata26'
  []
  [pp_fuelsampler_pow_26]
    type = CSV
    file_base = 'fuelsample/powdata26'
  []
  [pp_fuelsampler_temp_27]
    type = CSV
    file_base = 'fuelsample/tempdata27'
  []
  [pp_fuelsampler_pow_27]
    type = CSV
    file_base = 'fuelsample/powdata27'
  []
  [pp_fuelsampler_temp_28]
    type = CSV
    file_base = 'fuelsample/tempdata28'
  []
  [pp_fuelsampler_pow_28]
    type = CSV
    file_base = 'fuelsample/powdata28'
  []
  [pp_fuelsampler_temp_29]
    type = CSV
    file_base = 'fuelsample/tempdata29'
  []
  [pp_fuelsampler_pow_29]
    type = CSV
    file_base = 'fuelsample/powdata29'
  []
  [pp_fuelsampler_temp_30]
    type = CSV
    file_base = 'fuelsample/tempdata30'
  []
  [pp_fuelsampler_pow_30]
    type = CSV
    file_base = 'fuelsample/powdata30'
  []
  [pp_fuelsampler_temp_31]
    type = CSV
    file_base = 'fuelsample/tempdata31'
  []
  [pp_fuelsampler_pow_31]
    type = CSV
    file_base = 'fuelsample/powdata31'
  []
  [pp_fuelsampler_temp_32]
    type = CSV
    file_base = 'fuelsample/tempdata32'
  []
  [pp_fuelsampler_pow_32]
    type = CSV
    file_base = 'fuelsample/powdata32'
  []
  [pp_fuelsampler_pressure_1]
    type = CSV
    file_base = 'fuelsample/pressuredata1'
  []
  [pp_fuelsampler_pressure_2]
    type = CSV
    file_base = 'fuelsample/pressuredata2'
  []
  [pp_fuelsampler_pressure_3]
    type = CSV
    file_base = 'fuelsample/pressuredata3'
  []
  [pp_fuelsampler_pressure_4]
    type = CSV
    file_base = 'fuelsample/pressuredata4'
  []
  [pp_fuelsampler_pressure_5]
    type = CSV
    file_base = 'fuelsample/pressuredata5'
  []
  [pp_fuelsampler_pressure_6]
    type = CSV
    file_base = 'fuelsample/pressuredata6'
  []
  [pp_fuelsampler_pressure_7]
    type = CSV
    file_base = 'fuelsample/pressuredata7'
  []
  [pp_fuelsampler_pressure_8]
    type = CSV
    file_base = 'fuelsample/pressuredata8'
  []
  [pp_fuelsampler_pressure_9]
    type = CSV
    file_base = 'fuelsample/pressuredata9'
  []
  [pp_fuelsampler_pressure_10]
    type = CSV
    file_base = 'fuelsample/pressuredata10'
  []
  [pp_fuelsampler_pressure_11]
    type = CSV
    file_base = 'fuelsample/pressuredata11'
  []
  [pp_fuelsampler_pressure_12]
    type = CSV
    file_base = 'fuelsample/pressuredata12'
  []
  [pp_fuelsampler_pressure_13]
    type = CSV
    file_base = 'fuelsample/pressuredata13'
  []
  [pp_fuelsampler_pressure_14]
    type = CSV
    file_base = 'fuelsample/pressuredata14'
  []
  [pp_fuelsampler_pressure_15]
    type = CSV
    file_base = 'fuelsample/pressuredata15'
  []
  [pp_fuelsampler_pressure_16]
    type = CSV
    file_base = 'fuelsample/pressuredata16'
  []
  [pp_fuelsampler_pressure_17]
    type = CSV
    file_base = 'fuelsample/pressuredata17'
  []
  [pp_fuelsampler_pressure_18]
    type = CSV
    file_base = 'fuelsample/pressuredata18'
  []
  [pp_fuelsampler_pressure_19]
    type = CSV
    file_base = 'fuelsample/pressuredata19'
  []
  [pp_fuelsampler_pressure_20]
    type = CSV
    file_base = 'fuelsample/pressuredata20'
  []
  [pp_fuelsampler_pressure_21]
    type = CSV
    file_base = 'fuelsample/pressuredata21'
  []
  [pp_fuelsampler_pressure_22]
    type = CSV
    file_base = 'fuelsample/pressuredata22'
  []
  [pp_fuelsampler_pressure_23]
    type = CSV
    file_base = 'fuelsample/pressuredata23'
  []
  [pp_fuelsampler_pressure_24]
    type = CSV
    file_base = 'fuelsample/pressuredata24'
  []
  [pp_fuelsampler_pressure_25]
    type = CSV
    file_base = 'fuelsample/pressuredata25'
  []
  [pp_fuelsampler_pressure_26]
    type = CSV
    file_base = 'fuelsample/pressuredata26'
  []
  [pp_fuelsampler_pressure_27]
    type = CSV
    file_base = 'fuelsample/pressuredata27'
  []
  [pp_fuelsampler_pressure_28]
    type = CSV
    file_base = 'fuelsample/pressuredata28'
  []
  [pp_fuelsampler_pressure_29]
    type = CSV
    file_base = 'fuelsample/pressuredata29'
  []
  [pp_fuelsampler_pressure_30]
    type = CSV
    file_base = 'fuelsample/pressuredata30'
  []
  [pp_fuelsampler_pressure_31]
    type = CSV
    file_base = 'fuelsample/pressuredata31'
  []
  [pp_fuelsampler_pressure_32]
    type = CSV
    file_base = 'fuelsample/pressuredata32'
  []
[]
(microreactors/mrad/triso_failure/UnitCell_with_TM/MP_ss_bison.i)

BISON Model – Solid Mechanics

An original BISON grandchild application is used to calculate the solid mechanics of the HP-MR unit-cell. This application receives temperature from the BISON thermal physics sub-app, uses it to compute block displacements, stresses, and strains of the fuel, moderator, monolith, stainless steel envelope, and axial reflector blocks. The displacement variables are then transferred back to the BISON app. Hydrostatic stresses are also transferred to the BISON sub-app so that hydrostatic stress, temperature, and power density are all reported by the BISON sub-app at the end of the simulation. Dirichlet boundary conditions are applied to the bottom surface of the unit-cell, fixing displacement in all directions.

################################################################################
## NEAMS Micro-Reactor Application Driver                                     ##
## Heat Pipe Microreactor TRISO Failure Model                                 ##
## Assembly Model for Calculating TRISO Operating Conditions                  ##
## BISON Grandchild Application for Tensor Mechanics                          ##
################################################################################

fuel_blocks = 'fuel_01 fuel_02 fuel_03 fuel_04 fuel_05 fuel_06 fuel_07 fuel_08
               fuel_09 fuel_10 fuel_11 fuel_12 fuel_13 fuel_14 fuel_15 fuel_16
               fuel_17 fuel_18 fuel_19 fuel_20 fuel_21 fuel_22 fuel_23 fuel_24
               fuel_25 fuel_26 fuel_27 fuel_28 fuel_29 fuel_30 fuel_31 fuel_32'

mono_blocks = 'monolith_01 monolith_02 monolith_03 monolith_04 monolith_05 monolith_06 monolith_07 monolith_08
               monolith_09 monolith_10 monolith_11 monolith_12 monolith_13 monolith_14 monolith_15 monolith_16
               monolith_17 monolith_18 monolith_19 monolith_20 monolith_21 monolith_22 monolith_23 monolith_24
               monolith_25 monolith_26 monolith_27 monolith_28 monolith_29 monolith_30 monolith_31 monolith_32'
moderator_blocks = 'mod_01 mod_02 mod_03 mod_04 mod_05 mod_06 mod_07 mod_08
                    mod_09 mod_10 mod_11 mod_12 mod_13 mod_14 mod_15 mod_16
                    mod_17 mod_18 mod_19 mod_20 mod_21 mod_22 mod_23 mod_24
                    mod_25 mod_26 mod_27 mod_28 mod_29 mod_30 mod_31 mod_32'
mod_env_blocks = 'mod_envelope_01 mod_envelope_02 mod_envelope_03 mod_envelope_04 mod_envelope_05 mod_envelope_06 mod_envelope_07 mod_envelope_08
                  mod_envelope_09 mod_envelope_10 mod_envelope_11 mod_envelope_12 mod_envelope_13 mod_envelope_14 mod_envelope_15 mod_envelope_16
                  mod_envelope_17 mod_envelope_18 mod_envelope_19 mod_envelope_20 mod_envelope_21 mod_envelope_22 mod_envelope_23 mod_envelope_24
                  mod_envelope_25 mod_envelope_26 mod_envelope_27 mod_envelope_28 mod_envelope_29 mod_envelope_30 mod_envelope_31 mod_envelope_32'

[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]

[Mesh]
  file = ../mesh/3D_unit_cell_FY21_simple_YAN_40sections_5cm_axial_dist_bison.e
[]

[Physics/SolidMechanics/QuasiStatic]
  [fuel]
    block = ${fuel_blocks}
    add_variables = true
    strain = FINITE
    eigenstrain_names = 'fuel_thermal_eigenstrain'
    generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hydrostatic_stress strain_xx strain_yy strain_zz'
    save_in = 'saved_x saved_y saved_z'
    use_finite_deform_jacobian = true
  []
  [moderator]
    block = ${moderator_blocks}
    add_variables = true
    strain = FINITE
    eigenstrain_names = 'mod_thermal_eigenstrain'
    generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hydrostatic_stress strain_xx strain_yy strain_zz'
    save_in = 'saved_x saved_y saved_z'
    use_finite_deform_jacobian = true
  []
  [monolith]
    block = ${mono_blocks}
    add_variables = true
    strain = FINITE
    eigenstrain_names = 'monolith_thermal_eigenstrain'
    generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hydrostatic_stress strain_xx strain_yy strain_zz'
    save_in = 'saved_x saved_y saved_z'
    use_finite_deform_jacobian = true
  []
  [SS_envelop]
    block = ${mod_env_blocks}
    add_variables = true
    strain = FINITE
    eigenstrain_names = 'SS_envelop_thermal_eigenstrain'
    generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hydrostatic_stress strain_xx strain_yy strain_zz'
    save_in = 'saved_x saved_y saved_z'
    use_finite_deform_jacobian = true
  []
  [axial_reflector]
    block = 'bottom_reflector_1 bottom_reflector_2 bottom_reflector_3 bottom_reflector_4 top_reflector_1 top_reflector_2 top_reflector_3 top_reflector_4'
    add_variables = true
    strain = FINITE
    eigenstrain_names = 'axial_reflector_thermal_eigenstrain'
    generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hydrostatic_stress strain_xx strain_yy strain_zz'
    save_in = 'saved_x saved_y saved_z'
    use_finite_deform_jacobian = true
  []
[]

[AuxVariables]
  [temp]
    # initial_condition=800
  []
  [saved_x]
  []
  [saved_y]
  []
  [saved_z]
  []
  [saved_temp]
  []
[]

[BCs]
  [no_x]
    type = DirichletBC
    variable = disp_x
    boundary = bottom
    value = 0.0
  []
  [no_y]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0.0
  []
  [no_z]
    type = DirichletBC
    variable = disp_z
    boundary = 'bottom'
    value = 0.0
  []
[]

[Materials]
  [thermal_strains_fuel]
    type = ComputeThermalExpansionEigenstrain
    block = ${fuel_blocks}
    temperature = temp
    thermal_expansion_coeff = 4e-6 # 1/K # typical value for graphite
    stress_free_temperature = 800 # K
    eigenstrain_name = fuel_thermal_eigenstrain
  []
  [thermal_strains_mod]
    type = ComputeThermalExpansionEigenstrain
    block = ${moderator_blocks}
    temperature = temp
    thermal_expansion_coeff = 8.5e-6 # 1/K
    stress_free_temperature = 800 # K
    eigenstrain_name = mod_thermal_eigenstrain
  []
  [thermal_strains_monolith]
    type = ComputeThermalExpansionEigenstrain
    block = ${mono_blocks}
    temperature = temp
    thermal_expansion_coeff = 4e-6 # 1/K
    stress_free_temperature = 800 # K
    eigenstrain_name = monolith_thermal_eigenstrain
  []
  [thermal_strains_axial_reflector]
    type = ComputeThermalExpansionEigenstrain
    block = 'top_reflector_1 top_reflector_2 top_reflector_3 top_reflector_4
             bottom_reflector_1 bottom_reflector_2 bottom_reflector_3 bottom_reflector_4'
    temperature = temp
    thermal_expansion_coeff = 11.6e-6 # 1/K
    stress_free_temperature = 800 # K
    eigenstrain_name = axial_reflector_thermal_eigenstrain
  []
  [thermal_strains_SS_envelop]
    type = SS316ThermalExpansionEigenstrain
    stress_free_temperature = 800 # K
    temperature = temp
    eigenstrain_name = SS_envelop_thermal_eigenstrain
    block = ${mod_env_blocks}
    outputs = all
  []
  [elasticity_tensor_fuel]
    type = ComputeIsotropicElasticityTensor
    block = ${fuel_blocks}
    # Recommended values of the youngs_modulus (Verfondern2013) and
    # poissons_ratio (Burchell2014) for graphite matrix
    youngs_modulus = 10.0e9
    poissons_ratio = 0.25
  []
  [elasticity_tensor_mod]
    type = ComputeIsotropicElasticityTensor
    block = ${moderator_blocks}
    youngs_modulus = 2e10 # in Pa (BISON in SI units!)
    poissons_ratio = 0.3 # unitless
  []
  [elasticity_tensor_monolith]
    type = ComputeIsotropicElasticityTensor
    block = ${mono_blocks}
    # Recommended values of the youngs_modulus (Verfondern2013) and
    # poissons_ratio (Burchell2014) for graphite matrix
    youngs_modulus = 10.0e9
    poissons_ratio = 0.25
  []
  [elasticity_tensor_axial_reflector]
    type = ComputeIsotropicElasticityTensor
    block = 'top_reflector_1 top_reflector_2 top_reflector_3 top_reflector_4
             bottom_reflector_1 bottom_reflector_2 bottom_reflector_3 bottom_reflector_4'
    youngs_modulus = 280e9
    poissons_ratio = 0.07
  []
  [elasticity_tensor_SS_envelop]
    type = SS316ElasticityTensor
    elastic_constants_model = legacy_ifr
    temperature = temp
    block = ${mod_env_blocks}
  []
  [stress]
    type = ComputeFiniteStrainElasticStress
    block = 'monolith_01 monolith_02 monolith_03 monolith_04 monolith_05 monolith_06 monolith_07 monolith_08
                  monolith_09 monolith_10 monolith_11 monolith_12 monolith_13 monolith_14 monolith_15 monolith_16
                  monolith_17 monolith_18 monolith_19 monolith_20 monolith_21 monolith_22 monolith_23 monolith_24
                  monolith_25 monolith_26 monolith_27 monolith_28 monolith_29 monolith_30 monolith_31 monolith_32
                  fuel_01 fuel_02 fuel_03 fuel_04 fuel_05 fuel_06 fuel_07 fuel_08
                  fuel_09 fuel_10 fuel_11 fuel_12 fuel_13 fuel_14 fuel_15 fuel_16
                  fuel_17 fuel_18 fuel_19 fuel_20 fuel_21 fuel_22 fuel_23 fuel_24
                  fuel_25 fuel_26 fuel_27 fuel_28 fuel_29 fuel_30 fuel_31 fuel_32
                  mod_envelope_01 mod_envelope_02 mod_envelope_03 mod_envelope_04 mod_envelope_05 mod_envelope_06 mod_envelope_07 mod_envelope_08
                  mod_envelope_09 mod_envelope_10 mod_envelope_11 mod_envelope_12 mod_envelope_13 mod_envelope_14 mod_envelope_15 mod_envelope_16
                  mod_envelope_17 mod_envelope_18 mod_envelope_19 mod_envelope_20 mod_envelope_21 mod_envelope_22 mod_envelope_23 mod_envelope_24
                  mod_envelope_25 mod_envelope_26 mod_envelope_27 mod_envelope_28 mod_envelope_29 mod_envelope_30 mod_envelope_31 mod_envelope_32
                  top_reflector_1 top_reflector_2 top_reflector_3 top_reflector_4
                  bottom_reflector_1 bottom_reflector_2 bottom_reflector_3 bottom_reflector_4 mod_01 mod_02 mod_03 mod_04 mod_05 mod_06 mod_07 mod_08
                    mod_09 mod_10 mod_11 mod_12 mod_13 mod_14 mod_15 mod_16
                    mod_17 mod_18 mod_19 mod_20 mod_21 mod_22 mod_23 mod_24
                    mod_25 mod_26 mod_27 mod_28 mod_29 mod_30 mod_31 mod_32'
  []
[]

[Preconditioning]
  [SMP]
    type = SMP
    full = true
  []
[]

[Executioner]
  type = Transient

  petsc_options = '-snes_ksp_ew'
  petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
  petsc_options_value = 'lu       superlu_dist                  51'
  line_search = 'none'

  nl_abs_tol = 1e-5
  nl_rel_tol = 1e-5

  nl_max_its = 20
  start_time = 0
  end_time = '${fparse 10 * 365.25 * 24 * 3600}'
  dtmin = 1e-6
  dt = 1e7
[]

[Postprocessors]
  [axial_pressure_1]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_01
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_2]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_02
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_3]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_03
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_4]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_04
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_5]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_05
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_6]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_06
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_7]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_07
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_8]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_08
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_9]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_09
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_10]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_10
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_11]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_11
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_12]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_12
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_13]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_13
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_14]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_14
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_15]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_15
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_16]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_16
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_17]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_17
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_18]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_18
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_19]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_19
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_20]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_20
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_21]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_21
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_22]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_22
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_23]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_23
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_24]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_24
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_25]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_25
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_26]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_26
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_27]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_27
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_28]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_28
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_29]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_29
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_30]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_30
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_31]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_31
    execute_on = 'initial timestep_end'
  []
  [axial_pressure_32]
    type = ElementAverageValue
    variable = 'hydrostatic_stress'
    block = fuel_32
    execute_on = 'initial timestep_end'
  []
[]

[Outputs]
  perf_graph = true
  color = true
  csv = false
[]
(microreactors/mrad/triso_failure/UnitCell_with_TM/MP_ss_bison_TM.i)

MultiApps Hierarchy

The four MOOSE applications that govern different physics respectively are coupled together leveraging the MOOSE MultiApps system. Each code has its own mesh and corresponding space and time scales. The MOOSE MultiApp system is used to tightly couple the different codes via fixed point iterations as illustrated below in Figure 1. This method is largely unchanged from that reported in the full-core model multiphysics setup, with the major addition being the BISON solid mechanics grandchild app.

At the top level, Griffin calculates the power density based on its neutronics results given the fuel and moderator temperatures taken from the BISON child application. The calculated power density is also provided to BISON to update the temperature calculation. On the other hand, for the surface of each heat pipe, the thermal-physics BISON sub-app calculates the layered average heat flux along the normal direction of the surface and transfers the 1D field values to the respective Sockeye sub-application so that Sockeye can use them as its boundary condition. Meanwhile, the thermal-physics BISON sub-app takes the heat pipe surface temperature calculated by Sockeye back for its own boundary condition on the heat pipe surface. Additionally, the thermal-physics BISON sub-app transfers the nodal temperature variable to the solid mechanics BISON grandchild app, which calculates material stresses, strains, and displacements, and transfers the displacement variables and fuel hydrostatic stresses back to the thermal-physics BISON sub-app.

Figure 1: MultiApps hierarchy of the HP-MR multiphysics simulations.

Multiphysics Simulation Results

The results of the multiphysics simulation are the 96 CSV files that describe the time-varying temperature, power density, and hydrostatic stress of the HP-MR fuel at each of the 32 axial blocks. These files are produced in the /fuelsample subdirectory that appears in the directory where the multiphysics simulation is executed.

Simulation Cases

Whereas the full-core model model presented three different HP-MR scenarios: steady-state operation, load-following transient, and heat pipe failure transient; only steady-state operation of the HP-MR unit cell is reported in this model. This is because the load-following transient does not significantly affect the failure rates of the HP-MR TRISO fuel particle (Stauff et al., 2023)

Steady State Operation

For steady state simulation, the Griffin parent application performs an Eigenvalue calculation with a fixed preset integrated power (1.8 kW) to compute as well as the shape of power distribution. In the meantime, the BISON child application works with the Sockeye and BISON grandchild sub-applications to perform transient thermo-mechanical calculations using the given power density distribution until a thermal equilibrium is achieved. Once the fixed point iteration between different levels of MultiApps is converged, the steady state operation condition of the HP-MR at the given power level is obtained.

Model Meshes

HP-MR Unit Cell

Mesh generation with MOOSE's intrinsic mesh generator set has been the subject of extensive development, and is demonstrated in the HP-MR full core model. This work, however, is a streamlined continuation of work documented in ANL/NEAMS-21/3 (Stauff et al., 2021), which employed python scripts to generate the HP-MR unit-cell mesh. The HP-MR unit-cell model and mesh are not the main focus of this demonstration. Thus, mesh generation of the unit-cell has not been updated to use MOOSE mesh generators. The reader is encouraged to peruse the HP-MR full core model documentation for a demonstration of the MOOSE mesh generators and Reactor module to generate HP-MR meshes.

HP-MR TRISO

The TRISO particle mesh is built with the TRISO1DFiveLayerMeshGenerator mesh generator object, which creates a 1D mesh with five material blocks, automatically named "fuel", "buffer", "IPyC", "SiC", and "OPyC."

Guidance of Running Different Simulation Cases

To completely run this model, the user only needs to execute two inputs: the Griffin input for the unit-cell multiphysics model, which is the main app that governs the entire simulation, then the sampler BISON input for the TRISO failure analysis calculation. As discussed previously, the multiphysics steady state HP-MR simulation uses Griffin, BISON and Sockeye objects. Therefore, users should use a super application that covers these three applications, such as DireWolf or BlueCRAB (compiled with Sockeye included). The example command to run the unit-cell HP-MR multiphyiscs simulation is shown as follows, considering an MPI run with 40 CPUs:

cd /mrad/triso_failure/UnitCell_with_TM
mpirun -n 40 dire_wolf-opt -i Exec_MP_ss_griffin.i

This multiphysics simulation will produce the fuel temperature, power density, and hydrostatic stress CSV files that the TRISO failure analysis calculation uses as boundary conditions and will store them in the generated /fuelsample subdirectory. Once this simulation is complete, the user can then simply execute the TRISO sampler input with BISON, again assuming 40 CPUs:

cd /mrad/triso_failure/TRISO
mpirun -n 40 bison-opt -i triso_sampler.i

The TRISO failure analysis simulation will produce particle failure rate output in the /results subdirectory. All output will be written at the conclusion of the simulation. Each of the 32 axially-discretized particle simulations will receive its own output subdirectory in /results/particle(number). The provided plots.py will produce plots of axially discretized SiC and IPyC layer failure rates.

The user may vary the integrated power or temperature in the multiphysics simulation, and the number of sampled particles in the TRISO sampler simulation, to explore how these quantities affect TRISO layer failure rates. The user may also modify these inputs to forego the calculation of solid mechanics in the unit-cell to observe how the consideration of hydrostatic stresses affects results.

References

  1. Wen Jiang, Jason D. Hales, Benjamin W. Spencer, Blaise P. Collin, Andrew E. Slaughter, Stephen R. Novascone, Aysenur Toptan, Kyle A. Gamble, and Russell Gardner. Triso particle fuel performance and failure analysis with bison. Journal of Nuclear Materials, 548:152795, 2021.[BibTeX]
  2. Christopher Matthews, Vincent Laboure, Mark DeHart, Joshua Hansel, David Andrs, Yaqi Wang, Javier Ortensi, and Richard C Martineau. Coupled multiphysics simulations of heat pipe microreactors using direwolf. Nuclear Technology, 207(7):1142–1162, 2021.[BibTeX]
  3. N Stauff, A Abdelhameed, Y Cao, I Fassino, N amd Lander, Y Miao, K Mo, and D Nunez. High-fidelity multiphysics load following and accidental transient modeling of microreactors using neams tools: application of neams codes to perform multiphysics modeling analyses of micro-reactor concepts. Technical Report ANL/NEAMS-23/4, Argonne National Lab.(ANL), Argonne, IL (United States), 2023.[BibTeX]
  4. Nicolas E. Stauff, Kun Mo, Yan Cao, Justin W. Thomas, Yinbin Miao, Changho Lee, Christopher Matthews, and Bo Feng. Preliminary applications of neams codes for multiphysics modeling of a heat pipe microreactor. Proceedings of the American Nuclear Society Annual 2021 Meeting, 2021.[BibTeX]