Divertor Monoblock Sensitivities
This page documents sensitivity studies of different operating conditions performed on the Divertor Monoblock. The original pulsed operation of the divertor monoblock model was modified according to Hodille et al. (2021) towards a single-long tritium and heat flux pulse of an approximate equivalent total fluence. An initial sensitivity study on was performed on the divertor monoblock's boundary conditions under the steady pulse condition using the Sobol Method and other tools within the Stochastic Tools Module. Two additional sensitivity studies were performed on select transients obtained from El-Morshedy (2024) and Kessel et al. (2013).
General description of the sensitivity studies and the modified cases
Introduction
Many fusion components, especially those exposed to especially unique or extreme conditions, often lack sufficient operation data to evaluate their reliability, availability, maintainability, and inspectability (RAMI). As a proof-of-concept, we seek to construct a Probabilistic Physics of Failure (PPoF) model of a tokomak divertor system to obtain failure rate metrics and lifetime metric relevant to the RAMI of a nuclear fusion reactor.
To accomplish this, sensitivity studies on the Divertor Monoblock model described in Shimada et al. (2024) will be performed for (1) steady state conditions based on ITER data Hodille et al. (2021), (2) an inadvertent shutdown transient El-Morshedy (2024), and (3) an edge-localized mode transient Kessel et al. (2013). The sensitivity studies will be performed using the MOOSE Stochastic Module and its Sobol Method according to Saltelli (2002). The results of the sensitivity studies will be evaluated for state limits associated with heat transfer and tritium migration physics included in the Divertor Monoblock.
First, the modifications made to the Divertor Monoblock model will be described. Second, the conditions the divertor monoblock was subjected to in the steady and transient scenarios will be described. Finally, the results of the sensitivities, namely the first and second order sensitivity indices, example correlations and state frequencies will be presented.
Divertor Monoblock modifications
The pulsed operation of the divertor monoblock is relatively computationally expensive to accurately model since it requires taking small time steps to capture transients. For a sensitivity analysis study, where many simulations are required, lowering the cost of individual simulations is paramount. So as a first approximation, we replace the pulsed operation with a single steady pulse in this study.
Steady operation
The sensitivity studies must sample from a distribution of parameters to determine the net effects of those parameters on the model. Here, we vary the incident heat flux, tritium flux, coolant temperature, and coolant tritium concentration. For all these parameters, the sampling is done from uniform distributions as shown in Table 1 and Figure 1. It should be noted that the coolant temperature is unusually high in this case, as the ITER divertor is designed to have coolant run at 100°C with a 50°C temperature increase at the outlet Hirai et al. (2010); however, this is the designed 240°C temperature for the divertor to run high-pressure water in the bake-off regime for tritium unloading.
Table 1: Steady case varied boundary conditions.
| Parameter | Samples | Nominal Value | Distribution | Deviation |
|---|---|---|---|---|
| Incident Heat Flux | 100 | 10 MW/m Pitts et al. (2009)| Uniform | 5% | |
| Incident Tritium Flux | 100 | 7.9010 (normalized) | Uniform | 5% |
| Coolant Temperature | 100 | 552 K Hirai et al. (2010)| Uniform | 5% | |
| Coolant Tritium Concentration | 100 | 1.010 (normalized) | Uniform | 1% |

Figure 1: Distribution of sampled steady-state parameter values.
Transient case: inadvertent shutdown
For a transient case of an inadvertent shutdown, we modify parameters as shown in Table 2 and Figure 2. This case is modified such that we assume constant operation for 5.5 hours before encountering a Peak Heat Flux (and proportionally scaled tritium flux) for the sampled Peak Duration before resuming at one-tenth the heat and tritium flux of the original steady-state.
The top boundary tritium flux and temperature flux are both adjusted to be a function of time, with functions defined in the input file as follows.
[Functions<<<{"href": "../../syntax/Functions/index.html"}>>>]
[mobile_flux_bc_function]
type = ParsedFunction<<<{"description": "Function created by parsing a string", "href": "../../source/functions/MooseParsedFunction.html"}>>>
symbol_values<<<{"description": "Constant numeric values, postprocessor names, function names, and scalar variables corresponding to the symbols in symbol_names."}>>> = 'pulse_time_function'
symbol_names<<<{"description": "Symbols (excluding t,x,y,z) that are bound to the values provided by the corresponding items in the symbol_values vector."}>>> = 'pulse_time_function'
expression<<<{"description": "The user defined function."}>>> = "if(t<2e4, 7.90e-13, if(t<(2e4+${peak_duration}), ${peak_value}/1.0e7*7.90e-13, 7.90e-14))"
[]
[][Functions<<<{"href": "../../syntax/Functions/index.html"}>>>]
[temperature_flux_bc_function]
type = ParsedFunction<<<{"description": "Function created by parsing a string", "href": "../../source/functions/MooseParsedFunction.html"}>>>
symbol_values<<<{"description": "Constant numeric values, postprocessor names, function names, and scalar variables corresponding to the symbols in symbol_names."}>>> = 'pulse_time_function'
symbol_names<<<{"description": "Symbols (excluding t,x,y,z) that are bound to the values provided by the corresponding items in the symbol_values vector."}>>> = 'pulse_time_function'
expression<<<{"description": "The user defined function."}>>> = "if(t<2e4, 1.0e7, if(t<(2e4+${peak_duration}), ${peak_value}, 1.0e6))"
[]
[](test/tests/divertor_monoblock/shutdown_transient_runner.i)Table 2: Inadvertent shutdown varied parameter space.
| Parameter | Samples | Nominal Value | Distribution | Deviation |
|---|---|---|---|---|
| Peak Duration | 1000 | 1s | Normal | =5% |
| Peak Heat Flux | 1000 | 20 MW/m | Normal | =5% |
| Coolant Temperature | 1000 | 552 K Hirai et al. (2010) | Normal | =5% |
| Tungsten Conductivity | 1000 | 0.95 W/m K Shimada et al. (2024) | Uniform | 5% |

Figure 2: Distribution of sampled transient shutdown characteristics.
Transient case: edge-localized mode disruption
To simulate an edge-localized mode (ELM) disruption, we simulate a set of input conditions as described in Table 3. The heat flux is much larger than the transient shutdown case, but over a shorter duration. Most of the parameters will be selected from a normal distribution, as they reflect variations around some target or estimated value. The results will be shown below in Figure 6. We use the same tungsten conductivity as in Shimada et al. (2024), but vary the conductivity by a constant factor in the range of 5%.
Table 3: Edge-localized mode transient case parameter space.
| Parameter | Samples | Nominal Value | Distribution | Deviation |
|---|---|---|---|---|
| Peak Duration | 1000 | 1.32 ms | Normal | =5% |
| Peak Heat Flux | 1000 | 1147 MW/m Loarte et al. (2014) | Normal | =5% |
| Coolant Temperature | 1000 | 552 K Hirai et al. (2010)| Normal | =5% | |
| Tungsten Conductivity | 1000 | 0.95 W/m K Shimada et al. (2024) | Uniform | =5% |
Results
Steady operation
For purposes of comparison, we look at the maximum observed tungsten temperature and the scaled permeation flux with regards to the heat flux in Figure 3. The maximum tungsten temperature naturally correlates with the heat flux, but also depends on thermal conductivity and coolant temperature, as expected. The link between heat flux and tritium flux is not as strong. In general, larger values of tritium flux to the coolant are obtained with higher heat flux, which is the results from increased diffusivity and temperatures more likely to be sufficient for tritium release from traps. However, small tritium flux values are still obtained when a large heat flux is applied. This is attributed to lower temperatures towards the coolant (due to cooler coolant or higher thermal conductivity). Note, however, that low tritium flux are less likely as the heat flux increases.

Figure 3: Correlation between the incident heat flux and the maximum temperature of the tungsten, as well as the total (scaled) permeation flux of tritium into the coolant.
Inadvertent shutdown
For the inadvertent shutdown case, we can correlate the input parameters with several output parameters. Perhaps most interesting is the relationship between coolant temperature and the scaled tritium flux, where tritium does not permeate effectively for coolant temperatures below about 550 K. In Figure 4, the upper plots are scatterplots, the lower are kernel density plots and the diagonal are histograms.

Figure 4: Correlation between the input parameters and several metrics of performance in an inadvertent shutdown scenario.
The results of the simulation are shown in Figure 5. As would be expected, the amount of permeation and the amount of tritium retention have an approximately inverse relationship, and the pairwise interactions across the board are shown. The time at which maximum temperatures occur are all correlated, as one might expect.

Figure 5: Distribution of sampled postprocessor values in the inadvertent shutdown case.
Edge-localized mode disruption
For the case of simulating an ELM disruption event, we show in Figure 6 that although the operating conditions vary, the trends are substantially the same.

Figure 6: Correlation between the incident heat flux and the maximum temperature of the tungsten, as well as the total (scaled) permeation flux of tritium.
Complete input files
Below are the complete input files for the various sensitivity studies. Note that none of the inputs have been optimized for computational costs.
Steady operation
Subapp input
### This case adapts the published divertor monoblock input file under steady-state
### conditions, and is used to do a sobol sensitivity analysis of the underlying model
### by running steady_state_sobol.i directly from TMAP8.
### M. Shimada, P.-C. A. Simon, C. T. Icenhour, and G. Singh, “Toward a high-fidelity
### tritium transport modeling for retention and permeation experiments,” Fusion
### Engineering and Design, Volume 203, 2024, 114438, ISSN 0920-3796,
### https://doi.org/10.1016/j.fusengdes.2024.114438.
### Nomenclatures # Nelson S. Comments/Annotations
###
### C_mobile_j mobile H concentration in "j" material, where j = CuCrZr, Cu, W
### C_trapped_j trapped H concentration in "j" material, where j = CuCrZr, Cu, W
### C_total_j total H concentration in "j" material, where j = CuCrZr, Cu, W
###
### F_permeation permeation flux
### F_recombination recombination flux
###
### Sc_ Scaled
### Int_ Integrated
### ScInt_ Scaled and integrated
temperature_top_val = ${units 10 MW/m^2}
C_mob_W_top_flux_val = 7.90e-13 # normalized units
temperature_tube_val = ${units 552 K}
[Controls]
[stochastic]
# Sends data to Stochastic
type = SamplerReceiver
[]
[]
### This input uses the `!include` feature to incorporate other input files
!include divertor_monoblock_explicit_base.i
# Geometry and design
num_sectors := 12
rings_CuCrZr := 6
rings_Cu := 4
rings_W := 22
Functions/mobile_flux_bc_function/expression := '${fparse C_mob_W_top_flux_val}'
Functions/temperature_flux_bc_function/expression := '${fparse temperature_top_val}'
Functions/temperature_inner_function/expression := '${fparse temperature_tube_val}'
Functions/timestep_function/expression := 'if(t<100, 25, 400)'
Executioner/nl_rel_tol := 1e-2
Executioner/nl_abs_tol := 1e-1
Executioner/end_time := ${fparse plasma_cycle_time + plasma_ss_duration}
Executioner/nl_max_its := 24
Executioner/TimeStepper/growth_factor := 2.0
Postprocessors/F_recombination/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/F_permeation/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_mobile_W/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_trapped_W/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_total_W/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_mobile_Cu/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/ScInt_C_mobile_Cu/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_trapped_Cu/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/ScInt_C_trapped_Cu/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_total_Cu/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/ScInt_C_total_Cu/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_mobile_CuCrZr/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/ScInt_C_mobile_CuCrZr/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_trapped_CuCrZr/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/ScInt_C_trapped_CuCrZr/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_total_CuCrZr/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/ScInt_C_total_CuCrZr/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/temperature_top/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/temperature_tube/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/timestep_max_pp/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
# Need to add unused parameters from the divertor monoblock case to the dummy postprocessor
Postprocessors/unused_parameters/expression := '${num_sectors} + ${rings_H2O} + ${rings_CuCrZr} + ${rings_Cu} + ${rings_W}
+ ${temperature_coolant_max} + ${plasma_max_heat} + ${plasma_min_heat}
+ ${plasma_max_flux} + ${plasma_min_flux}'
Variables/temperature/initial_condition= ${temperature_initial}
[Outputs]
# Control outputs, include exodus and csv.
execute_on = 'none'
[]
Controller input
### This input file defines a sobol indice analysis of the monoblock input file to simulate an
### steady-state operation of the ITER divertor monoblock,
### with some simplifying assumptions that allow it
### to be run in a short amount of time.
### The physics input file is steady_state_runner.i
### This file should be called directly by TMAP8, preferably with access to multiple cpus
### Output information including summary statistics can be found in a json file
# Define parameters in one spot for easier reading
upper_heat_flux_lower = ${units 9.5 MW/m^2 -> W/m^2}
upper_heat_flux_upper = ${units 10.5 MW/m^2 -> W/m^2}
upper_tritium_flux_lower = 7.505e-13 # units
upper_tritium_flux_upper = 8.295e-13 # units
coolant_temperature_lower = ${units 524.4 K}
coolant_temperature_upper = ${units 579.6 K}
N_samples = 10
[StochasticTools<<<{"href": "../../syntax/StochasticTools/index.html"}>>>]
# Designate as the Controller/Main Input
[]
[MultiApps<<<{"href": "../../syntax/MultiApps/index.html"}>>>]
# Designate a subapp to control later
[runner]
type = SamplerFullSolveMultiApp<<<{"description": "Creates a full-solve type sub-application for each row of each Sampler matrix.", "href": "../../source/multiapps/SamplerFullSolveMultiApp.html"}>>>
sampler<<<{"description": "The Sampler object to utilize for creating MultiApps."}>>> = sobol
input_files<<<{"description": "The input file for each App. If this parameter only contains one input file it will be used for all of the Apps. When using 'positions_from_file' it is also admissable to provide one input_file per file."}>>> = 'steady_state_runner.i'
mode<<<{"description": "The operation mode, 'normal' creates one sub-application for each row in the Sampler and 'batch-reset' and 'batch-restore' creates N sub-applications, where N is the minimum of 'num_rows' in the Sampler and floor(number of processes / min_procs_per_app). To run the rows in the Sampler, 'batch-reset' will destroy and re-create sub-apps as needed, whereas the 'batch-restore' will backup and restore sub-apps to the initial state prior to execution, without destruction."}>>> = batch-reset
keep_full_output_history<<<{"description": "Whether or not to keep the full output history when this multiapp has multiple entries"}>>> = True
[]
[]
[Controls<<<{"href": "../../syntax/Controls/index.html"}>>>]
# Control inputs from Main->Subapp
[cmdline]
type = MultiAppSamplerControl<<<{"description": "Control for modifying the command line arguments of MultiApps.", "href": "../../source/controls/MultiAppSamplerControl.html"}>>>
multi_app<<<{"description": "The name of the MultiApp to control."}>>> = runner
sampler<<<{"description": "The Sampler object to utilize for altering the command line options of the MultiApp."}>>> = sobol
param_names<<<{"description": "The names of the command line parameters to set via the sampled data."}>>> = "temperature_top_val
C_mob_W_top_flux_val
temperature_tube_val"
[]
[]
[Distributions<<<{"href": "../../syntax/Distributions/index.html"}>>>]
# Define probability distributions of parameters for sampling
[H_top]
type = Uniform<<<{"description": "Continuous uniform distribution.", "href": "../../source/distributions/Uniform.html"}>>>
lower_bound<<<{"description": "Distribution lower bound"}>>> = ${upper_heat_flux_lower}
upper_bound<<<{"description": "Distribution upper bound"}>>> = ${upper_heat_flux_upper}
[]
[C_top]
type = Uniform<<<{"description": "Continuous uniform distribution.", "href": "../../source/distributions/Uniform.html"}>>>
lower_bound<<<{"description": "Distribution lower bound"}>>> = ${upper_tritium_flux_lower}
upper_bound<<<{"description": "Distribution upper bound"}>>> = ${upper_tritium_flux_upper}
[]
[H_bot]
type = Uniform<<<{"description": "Continuous uniform distribution.", "href": "../../source/distributions/Uniform.html"}>>>
lower_bound<<<{"description": "Distribution lower bound"}>>> = ${coolant_temperature_lower}
upper_bound<<<{"description": "Distribution upper bound"}>>> = ${coolant_temperature_upper}
[]
[]
[Samplers<<<{"href": "../../syntax/Samplers/index.html"}>>>]
# Sampling methodology using the probability distributions above
[hypercube_1]
type = LatinHypercube<<<{"description": "Latin Hypercube Sampler.", "href": "../../source/samplers/LatinHypercubeSampler.html"}>>>
distributions<<<{"description": "The distribution names to be sampled, the number of distributions provided defines the number of columns per matrix."}>>> = 'H_top C_top H_bot'
num_rows<<<{"description": "The size of the square matrix to generate."}>>> = ${N_samples}
seed<<<{"description": "Random number generator initial seed"}>>> = 1001
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'PRE_MULTIAPP_SETUP'
[]
[hypercube_2]
type = LatinHypercube<<<{"description": "Latin Hypercube Sampler.", "href": "../../source/samplers/LatinHypercubeSampler.html"}>>>
distributions<<<{"description": "The distribution names to be sampled, the number of distributions provided defines the number of columns per matrix."}>>> = 'H_top C_top H_bot'
num_rows<<<{"description": "The size of the square matrix to generate."}>>> = ${N_samples}
seed<<<{"description": "Random number generator initial seed"}>>> = 1002
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'PRE_MULTIAPP_SETUP'
[]
[sobol]
type = Sobol<<<{"description": "Sobol variance-based sensitivity analysis Sampler.", "href": "../../source/samplers/SobolSampler.html"}>>>
sampler_a<<<{"description": "The 'sample' matrix."}>>> = hypercube_1
sampler_b<<<{"description": "The 're-sample' matrix."}>>> = hypercube_2
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'PRE_MULTIAPP_SETUP'
[]
[]
[Transfers<<<{"href": "../../syntax/Transfers/index.html"}>>>]
# Define values to extract from subapp
[results]
type = SamplerReporterTransfer<<<{"description": "Transfers data from Reporters on the sub-application to a StochasticReporter on the main application.", "href": "../../source/transfers/SamplerReporterTransfer.html"}>>>
from_multi_app<<<{"description": "The name of the MultiApp to receive data from"}>>> = runner
sampler<<<{"description": "A the Sampler object that Transfer is associated.."}>>> = sobol
stochastic_reporter<<<{"description": "The name of the StochasticReporter object to transfer values to."}>>> = results
#execute_on = 'MULTIAPP_FIXED_POINT_END'
from_reporter<<<{"description": "The name(s) of the Reporter(s) on the sub-app to transfer from."}>>> = "F_permeation/value
Scaled_Tritium_Flux/value
total_retention/value
coolant_heat_flux/value
max_temperature_W/value
max_temperature_Cu/value
max_temperature_CuCrZr/value"
[]
[matrix_results]
type = SamplerReporterTransfer<<<{"description": "Transfers data from Reporters on the sub-application to a StochasticReporter on the main application.", "href": "../../source/transfers/SamplerReporterTransfer.html"}>>>
from_multi_app<<<{"description": "The name of the MultiApp to receive data from"}>>> = runner
sampler<<<{"description": "A the Sampler object that Transfer is associated.."}>>> = sobol
stochastic_reporter<<<{"description": "The name of the StochasticReporter object to transfer values to."}>>> = matrix
from_reporter<<<{"description": "The name(s) of the Reporter(s) on the sub-app to transfer from."}>>> = "F_permeation/value
Scaled_Tritium_Flux/value
total_retention/value
coolant_heat_flux/value
max_temperature_W/value
max_temperature_Cu/value
max_temperature_CuCrZr/value"
[]
[]
[Reporters<<<{"href": "../../syntax/Reporters/index.html"}>>>]
[results]
type = StochasticReporter<<<{"description": "Storage container for stochastic simulation results coming from Reporters.", "href": "../../source/reporters/StochasticReporter.html"}>>>
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'FINAL' # INITIAL TIMESTEP_END MULTIAPP_FIXED_POINT_END
[]
[stats]
type = StatisticsReporter<<<{"description": "Compute statistical values of a given VectorPostprocessor objects and vectors.", "href": "../../source/reporters/StatisticsReporter.html"}>>>
reporters<<<{"description": "List of Reporter values to utilized for statistic computations."}>>> = "results/results:F_permeation:value
results/results:Scaled_Tritium_Flux:value
results/results:total_retention:value
results/results:coolant_heat_flux:value
results/results:max_temperature_W:value
results/results:max_temperature_Cu:value
results/results:max_temperature_CuCrZr:value"
compute<<<{"description": "The statistic(s) to compute for each of the supplied vector postprocessors."}>>> = 'mean stddev'
ci_method<<<{"description": "The method to use for computing confidence level intervals."}>>> = 'percentile'
ci_levels<<<{"description": "A vector of confidence levels to consider, values must be in (0, 1)."}>>> = "0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50
0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95"
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'FINAL'
[]
[sobol]
type = SobolReporter<<<{"description": "Compute SOBOL statistics values of a given VectorPostprocessor or Reporter objects and vectors.", "href": "../../source/reporters/SobolReporter.html"}>>>
sampler<<<{"description": "SobolSampler object."}>>> = sobol
reporters<<<{"description": "List of Reporter values to utilized for statistic computations."}>>> = "results/results:F_permeation:value
results/results:Scaled_Tritium_Flux:value
results/results:total_retention:value
results/results:coolant_heat_flux:value
results/results:max_temperature_W:value
results/results:max_temperature_Cu:value
results/results:max_temperature_CuCrZr:value"
ci_levels<<<{"description": "A vector of confidence levels to consider, values must be in (0, 1)."}>>> = "0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50
0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95"
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'FINAL'
[]
[matrix]
type = StochasticMatrix<<<{"description": "Tool for extracting Sampler object data and storing data from stochastic simulations.", "href": "../../source/reporters/StochasticMatrix.html"}>>>
sampler<<<{"description": "The sample from which to extract distribution data."}>>> = sobol
sampler_column_names<<<{"description": "Prescribed names of sampler columns, used to assign names of outputted vectors."}>>> = "BCs/temperature_top/value
BCs/C_mob_W_top_flux/value
BCs/temperature_tube/value"
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'FINAL'
parallel_type<<<{"description": "This parameter will determine how the stochastic data is gathered. It is common for outputting purposes that this parameter be set to ROOT, otherwise, many files will be produced showing the values on each processor. However, if there are lot of samples, gathering on root may be memory restrictive."}>>> = ROOT
[]
[]
[Outputs<<<{"href": "../../syntax/Outputs/index.html"}>>>]
[out]
type = JSON<<<{"description": "Output for Reporter values using JSON format.", "href": "../../source/outputs/JSONOutput.html"}>>>
distributed<<<{"description": "Whether or not to output distributed data (data not on rank 0)"}>>> = False
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'FINAL'
execute_reporters_on<<<{"description": "Control of when Reporter values are output"}>>> = 'FINAL'
[]
[]Inadvertent shutdown
Subapp input
### This case extends the published divertor monoblock input file to simulate a
### shutdown transient, with some simplifying assumptions that allow it
### to be run in a short amount of time.
### M. Shimada, P.-C. A. Simon, C. T. Icenhour, and G. Singh, “Toward a high-fidelity
### tritium transport modeling for retention and permeation experiments,” Fusion
### Engineering and Design, Volume 203, 2024, 114438, ISSN 0920-3796,
### https://doi.org/10.1016/j.fusengdes.2024.114438.
### Nomenclatures # Nelson S. Comments/Annotations
###
### C_mobile_j mobile H concentration in "j" material, where j = CuCrZr, Cu, W
### C_trapped_j trapped H concentration in "j" material, where j = CuCrZr, Cu, W
### C_total_j total H concentration in "j" material, where j = CuCrZr, Cu, W
###
### F_permeation permeation flux
### F_recombination recombination flux
###
### Sc_ Scaled
### Int_ Integrated
### ScInt_ Scaled and integrated # Nelson S. Comments/Annotations
### VARIABLES ###
peak_value = ${units 20 MW/m^2 -> W/m^2}
peak_duration = ${units 1.0 s}
coolant_temperature = ${units 552 K}
W_cond_factor = 1.0
!include divertor_monoblock_explicit_base.i
Functions/timestep_function/expression := "if(t<2e4, 500, if(t<(2e4+${peak_duration}+1), 0.10, 500))"
Functions/mobile_flux_bc_function/expression := "if(t<2e4, 7.90e-13, if(t<(2e4+${peak_duration}), ${peak_value}/1.0e7*7.90e-13, "
"7.90e-14))"
Functions/temperature_flux_bc_function/expression := "if(t<2e4, 1.0e7, if(t<(2e4+${peak_duration}), ${peak_value}, 1.0e6))"
Functions/temperature_inner_function/expression := ${coolant_temperature}
Functions/temperature_steady_state/expression := "-1.59786e4*x^2 -1.11629611e4*x + 4.84297313e2 + 1.9491599e6*y^2 + 1.55723201e4*y "
"- 7.312884e5*x*y"
Executioner/petsc_options_iname := '-pc_type'
Executioner/petsc_options_value := 'lu'
Executioner/nl_rel_tol := 1e-2
Executioner/nl_abs_tol := 1e-1
Executioner/end_time := ${units 2.0002e4 s}
Executioner/TimeStepper/dt := 100
Executioner/dtmin := 1e-6
Executioner/nl_max_its := 36
Executioner/TimeStepper/optimal_iterations := 10
Executioner/TimeStepper/growth_factor := 2.0
[Executioner]
[TimeStepper]
time_t = '0 2e4 2.01e4'
time_dt = '100 0.001 100'
[]
error_on_dtmin = False
[]
Postprocessors/F_recombination/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/F_permeation/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_mobile_W/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_trapped_W/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_total_W/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_mobile_Cu/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/ScInt_C_mobile_Cu/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_trapped_Cu/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/ScInt_C_trapped_Cu/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_total_Cu/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/ScInt_C_total_Cu/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_mobile_CuCrZr/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/ScInt_C_mobile_CuCrZr/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_trapped_CuCrZr/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/ScInt_C_trapped_CuCrZr/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_total_CuCrZr/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/ScInt_C_total_CuCrZr/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/temperature_top/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/temperature_tube/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/timestep_max_pp/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
# Continue using the steady-state dummy postprocessor, but add unused definitions
# from the steady-state input.
Postprocessors/unused_parameters/expression := '${num_sectors} + ${rings_H2O} + ${rings_CuCrZr} + ${rings_Cu} + ${rings_W} + ${temperature_coolant_max}
+ ${plasma_max_heat} + ${plasma_min_heat} + ${plasma_max_flux} + ${plasma_min_flux}'
[Postprocessors]
[time_max_T_W]
type = TimeExtremeValue
postprocessor = max_temperature_W
output_type = extreme_value
value_type = max
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[time_max_T_Cu]
type = TimeExtremeValue
postprocessor = max_temperature_Cu
output_type = extreme_value
value_type = max
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[time_max_T_CuCrZr]
type = TimeExtremeValue
postprocessor = max_temperature_CuCrZr
output_type = extreme_value
value_type = max
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[]
VectorPostprocessors/line/execute_on := 'NONE'
Variables/temperature/initial_condition := '${temperature_initial}'
Materials/thermal_conductivity_W/expression := '${W_cond_factor}*(2.41e2 - 2.90e-1 * temperature + 2.54e-4 * temperature^2 - 1.03e-7 * temperature^3 + 1.52e-11 * temperature^4)'
[Controls]
[stochastic]
# Sends data to Stochastic
type = SamplerReceiver
[]
[]
[Outputs]
# Control outputs, include exodus and csv.
execute_on = 'none'
[]
Controller input
### This input file defines a sobol indice analysis of the monoblock input file to simulate a
### shutdown transient, with some simplifying assumptions that allow it
### to be run in a short amount of time.
### The physics input file is elm_transient_runner.i
### This file should be called directly by TMAP8, preferably with access to multiple cpus
### Output information including summary statistics can be found in a json file
# Define parameters in one spot for easier reading
peak_flux_value = ${units 20 MW/m^2 -> W/m^2}
peak_flux_std_deviation = ${units 1 MW/m^2 -> W/m^2}
peak_flux_duration_value = ${units 1 s}
peak_flux_duration_std_deviation = ${units 0.05 s}
coolant_temperature_value = ${units 552 K}
coolant_temperature_std_deviation = ${units 27.6 K}
tungsten_kth_prefactor_lower = 0.9
tungsten_kth_prefactor_upper = 1.0
N_samples = 10
[StochasticTools<<<{"href": "../../syntax/StochasticTools/index.html"}>>>]
# Designate as the Controller/Main Input
[]
[MultiApps<<<{"href": "../../syntax/MultiApps/index.html"}>>>]
# Designate a subapp to control later
[runner]
type = SamplerFullSolveMultiApp<<<{"description": "Creates a full-solve type sub-application for each row of each Sampler matrix.", "href": "../../source/multiapps/SamplerFullSolveMultiApp.html"}>>>
sampler<<<{"description": "The Sampler object to utilize for creating MultiApps."}>>> = sobol
input_files<<<{"description": "The input file for each App. If this parameter only contains one input file it will be used for all of the Apps. When using 'positions_from_file' it is also admissable to provide one input_file per file."}>>> = 'shutdown_transient_runner.i'
mode<<<{"description": "The operation mode, 'normal' creates one sub-application for each row in the Sampler and 'batch-reset' and 'batch-restore' creates N sub-applications, where N is the minimum of 'num_rows' in the Sampler and floor(number of processes / min_procs_per_app). To run the rows in the Sampler, 'batch-reset' will destroy and re-create sub-apps as needed, whereas the 'batch-restore' will backup and restore sub-apps to the initial state prior to execution, without destruction."}>>> = batch-reset
keep_full_output_history<<<{"description": "Whether or not to keep the full output history when this multiapp has multiple entries"}>>> = True
ignore_solve_not_converge<<<{"description": "True to continue main app even if a sub app's solve does not converge."}>>> = True
[]
[]
[Controls<<<{"href": "../../syntax/Controls/index.html"}>>>]
# Control inputs from Main->Subapp
[cmdline]
type = MultiAppSamplerControl<<<{"description": "Control for modifying the command line arguments of MultiApps.", "href": "../../source/controls/MultiAppSamplerControl.html"}>>>
multi_app<<<{"description": "The name of the MultiApp to control."}>>> = runner
sampler<<<{"description": "The Sampler object to utilize for altering the command line options of the MultiApp."}>>> = sobol
param_names<<<{"description": "The names of the command line parameters to set via the sampled data."}>>> = "peak_value
peak_duration
coolant_temperature
W_cond_factor"
[]
[]
[Distributions<<<{"href": "../../syntax/Distributions/index.html"}>>>]
# Define probability distributions of parameters for sampling
[P_val]
type = Normal<<<{"description": "Normal distribution", "href": "../../source/distributions/Normal.html"}>>>
mean<<<{"description": "Mean (or expectation) of the distribution."}>>> = ${peak_flux_value}
standard_deviation<<<{"description": "Standard deviation of the distribution "}>>> = ${peak_flux_std_deviation}
[]
[P_dur]
type = Normal<<<{"description": "Normal distribution", "href": "../../source/distributions/Normal.html"}>>>
mean<<<{"description": "Mean (or expectation) of the distribution."}>>> = ${peak_flux_duration_value}
standard_deviation<<<{"description": "Standard deviation of the distribution "}>>> = ${peak_flux_duration_std_deviation}
[]
[C_temperature]
type = Normal<<<{"description": "Normal distribution", "href": "../../source/distributions/Normal.html"}>>>
mean<<<{"description": "Mean (or expectation) of the distribution."}>>> = ${coolant_temperature_value}
standard_deviation<<<{"description": "Standard deviation of the distribution "}>>> = ${coolant_temperature_std_deviation}
[]
[W_cond]
type = Uniform<<<{"description": "Continuous uniform distribution.", "href": "../../source/distributions/Uniform.html"}>>>
lower_bound<<<{"description": "Distribution lower bound"}>>> = ${tungsten_kth_prefactor_lower}
upper_bound<<<{"description": "Distribution upper bound"}>>> = ${tungsten_kth_prefactor_upper}
[]
[]
[Samplers<<<{"href": "../../syntax/Samplers/index.html"}>>>]
# Sampling methodology using the probability distributions above
[hypercube_1]
type = LatinHypercube<<<{"description": "Latin Hypercube Sampler.", "href": "../../source/samplers/LatinHypercubeSampler.html"}>>>
distributions<<<{"description": "The distribution names to be sampled, the number of distributions provided defines the number of columns per matrix."}>>> = 'P_val P_dur C_temperature W_cond'
num_rows<<<{"description": "The size of the square matrix to generate."}>>> = ${N_samples}
seed<<<{"description": "Random number generator initial seed"}>>> = 1001
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'PRE_MULTIAPP_SETUP'
[]
[hypercube_2]
type = LatinHypercube<<<{"description": "Latin Hypercube Sampler.", "href": "../../source/samplers/LatinHypercubeSampler.html"}>>>
distributions<<<{"description": "The distribution names to be sampled, the number of distributions provided defines the number of columns per matrix."}>>> = 'P_val P_dur C_temperature W_cond'
num_rows<<<{"description": "The size of the square matrix to generate."}>>> = ${N_samples}
seed<<<{"description": "Random number generator initial seed"}>>> = 1002
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'PRE_MULTIAPP_SETUP'
[]
[sobol]
type = Sobol<<<{"description": "Sobol variance-based sensitivity analysis Sampler.", "href": "../../source/samplers/SobolSampler.html"}>>>
sampler_a<<<{"description": "The 'sample' matrix."}>>> = hypercube_1
sampler_b<<<{"description": "The 're-sample' matrix."}>>> = hypercube_2
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'PRE_MULTIAPP_SETUP'
[]
[]
[Transfers<<<{"href": "../../syntax/Transfers/index.html"}>>>]
# Define values to extract from subapp
[results]
type = SamplerReporterTransfer<<<{"description": "Transfers data from Reporters on the sub-application to a StochasticReporter on the main application.", "href": "../../source/transfers/SamplerReporterTransfer.html"}>>>
from_multi_app<<<{"description": "The name of the MultiApp to receive data from"}>>> = runner
sampler<<<{"description": "A the Sampler object that Transfer is associated.."}>>> = sobol
stochastic_reporter<<<{"description": "The name of the StochasticReporter object to transfer values to."}>>> = results
#execute_on = 'MULTIAPP_FIXED_POINT_END'
from_reporter<<<{"description": "The name(s) of the Reporter(s) on the sub-app to transfer from."}>>> = "F_permeation/value
Scaled_Tritium_Flux/value
total_retention/value
coolant_heat_flux/value
max_temperature_W/value
max_temperature_Cu/value
max_temperature_CuCrZr/value
time_max_T_W/value
time_max_T_Cu/value
time_max_T_CuCrZr/value"
[]
[matrix_results]
type = SamplerReporterTransfer<<<{"description": "Transfers data from Reporters on the sub-application to a StochasticReporter on the main application.", "href": "../../source/transfers/SamplerReporterTransfer.html"}>>>
from_multi_app<<<{"description": "The name of the MultiApp to receive data from"}>>> = runner
sampler<<<{"description": "A the Sampler object that Transfer is associated.."}>>> = sobol
stochastic_reporter<<<{"description": "The name of the StochasticReporter object to transfer values to."}>>> = matrix
from_reporter<<<{"description": "The name(s) of the Reporter(s) on the sub-app to transfer from."}>>> = "F_permeation/value
Scaled_Tritium_Flux/value
total_retention/value
coolant_heat_flux/value
max_temperature_W/value
max_temperature_Cu/value
max_temperature_CuCrZr/value
time_max_T_W/value
time_max_T_Cu/value
time_max_T_CuCrZr/value"
[]
[]
[Reporters<<<{"href": "../../syntax/Reporters/index.html"}>>>]
[results]
type = StochasticReporter<<<{"description": "Storage container for stochastic simulation results coming from Reporters.", "href": "../../source/reporters/StochasticReporter.html"}>>>
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'FINAL' # INITIAL TIMESTEP_END MULTIAPP_FIXED_POINT_END
[]
[stats]
type = StatisticsReporter<<<{"description": "Compute statistical values of a given VectorPostprocessor objects and vectors.", "href": "../../source/reporters/StatisticsReporter.html"}>>>
reporters<<<{"description": "List of Reporter values to utilized for statistic computations."}>>> = "results/results:F_permeation:value
results/results:Scaled_Tritium_Flux:value
results/results:total_retention:value
results/results:coolant_heat_flux:value
results/results:max_temperature_W:value
results/results:max_temperature_Cu:value
results/results:max_temperature_CuCrZr:value
results/results:time_max_T_W:value
results/results:time_max_T_Cu:value
results/results:time_max_T_CuCrZr:value"
compute<<<{"description": "The statistic(s) to compute for each of the supplied vector postprocessors."}>>> = 'mean stddev'
ci_method<<<{"description": "The method to use for computing confidence level intervals."}>>> = 'percentile'
ci_levels<<<{"description": "A vector of confidence levels to consider, values must be in (0, 1)."}>>> = "0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50
0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95"
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'FINAL'
[]
[sobol]
type = SobolReporter<<<{"description": "Compute SOBOL statistics values of a given VectorPostprocessor or Reporter objects and vectors.", "href": "../../source/reporters/SobolReporter.html"}>>>
sampler<<<{"description": "SobolSampler object."}>>> = sobol
reporters<<<{"description": "List of Reporter values to utilized for statistic computations."}>>> = "results/results:F_permeation:value
results/results:Scaled_Tritium_Flux:value
results/results:total_retention:value
results/results:coolant_heat_flux:value
results/results:max_temperature_W:value
results/results:max_temperature_Cu:value
results/results:max_temperature_CuCrZr:value
results/results:time_max_T_W:value
results/results:time_max_T_Cu:value
results/results:time_max_T_CuCrZr:value"
ci_levels<<<{"description": "A vector of confidence levels to consider, values must be in (0, 1)."}>>> = "0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50
0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95"
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'FINAL'
[]
[matrix]
type = StochasticMatrix<<<{"description": "Tool for extracting Sampler object data and storing data from stochastic simulations.", "href": "../../source/reporters/StochasticMatrix.html"}>>>
sampler<<<{"description": "The sample from which to extract distribution data."}>>> = sobol
sampler_column_names<<<{"description": "Prescribed names of sampler columns, used to assign names of outputted vectors."}>>> = "peak_value
peak_duration
coolant_temperature
W_cond_factor"
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'FINAL'
parallel_type<<<{"description": "This parameter will determine how the stochastic data is gathered. It is common for outputting purposes that this parameter be set to ROOT, otherwise, many files will be produced showing the values on each processor. However, if there are lot of samples, gathering on root may be memory restrictive."}>>> = ROOT
[]
[]
[Outputs<<<{"href": "../../syntax/Outputs/index.html"}>>>]
[out]
type = JSON<<<{"description": "Output for Reporter values using JSON format.", "href": "../../source/outputs/JSONOutput.html"}>>>
distributed<<<{"description": "Whether or not to output distributed data (data not on rank 0)"}>>> = True
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'FINAL'
execute_reporters_on<<<{"description": "Control of when Reporter values are output"}>>> = 'FINAL'
[]
[]Edge-localized mode disruption
Subapp input
### This case extends the published divertor monoblock input file to simulate an
### Edge-Localized Mode transient, with some simplifying assumptions that allow it
### to be run in a short amount of time.
### M. Shimada, P.-C. A. Simon, C. T. Icenhour, and G. Singh, “Toward a high-fidelity
### tritium transport modeling for retention and permeation experiments,” Fusion
### Engineering and Design, Volume 203, 2024, 114438, ISSN 0920-3796,
### https://doi.org/10.1016/j.fusengdes.2024.114438.
### This input uses the `!include` feature to incorporate other input files
### Nomenclatures
### C_mobile_j mobile H concentration in "j" material, where j = CuCrZr, Cu, W
### C_trapped_j trapped H concentration in "j" material, where j = CuCrZr, Cu, W
### C_total_j total H concentration in "j" material, where j = CuCrZr, Cu, W
###
### F_permeation permeation flux
### F_recombination recombination flux
###
### Sc_ Scaled
### Int_ Integrated
### ScInt_ Scaled and integrated
!include divertor_monoblock_explicit_base.i
base_power = 10e6 # ${units 10 MW/m^2 -> W/m^2}
coolant_temperature = ${units 552 K}
elm_value = ${units 1147 MW/m^2 -> W/m^2}
elm_duration = ${units 1.32 ms -> s}
W_cond_factor = 1.0
Functions/mobile_flux_bc_function/expression := "if(t<2e2, (${base_power}*7.9e-13/1e7),
if(t<(2e2+${elm_duration}*1/3),
(${base_power}*7.9e-13/1e7)+(t-2e2)/(${elm_duration}*1/3)*((${elm_value}*7.9e-13/1e7)-(${base_power}*7.9e-13/1e7)),
if(t<(2e2+(${elm_duration}*1/3)+(${elm_duration}*2/3)),
(${elm_value}*7.9e-13/1e7)-(t-2e2-(${elm_duration}*1/3))/(${elm_duration}*2/3)*((${elm_value}*7.9e-13/1e7)-(${base_power}*7.9e-13/1e7)), (${base_power}*7.9e-13/1e7))))"
Functions/temperature_inner_function/expression := "${coolant_temperature}"
Executioner/petsc_options_iname := '-pc_type'
Executioner/petsc_options_value := 'lu'
Executioner/nl_rel_tol := 1e-5
Executioner/nl_abs_tol := 1e-6
Executioner/end_time := 2.01e2
Executioner/dtmin := 1e-6
Executioner/nl_max_its := 36
Executioner/TimeStepper/dt := 125
Executioner/TimeStepper/growth_factor := 2.0
[Executioner]
[TimeStepper]
time_t = '0 2e2 2.01e2'
time_dt = '100 0.0001 100'
[]
error_on_dtmin = False
[]
Postprocessors/F_recombination/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/F_permeation/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_mobile_W/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/ScInt_C_mobile_W/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_trapped_W/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_total_W/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_mobile_Cu/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_trapped_Cu/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/ScInt_C_trapped_Cu/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_total_Cu/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/ScInt_C_total_Cu/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_mobile_CuCrZr/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/ScInt_C_mobile_CuCrZr/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_trapped_CuCrZr/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/ScInt_C_trapped_CuCrZr/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/Int_C_total_CuCrZr/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/ScInt_C_total_CuCrZr/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/temperature_top/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/temperature_tube/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
Postprocessors/timestep_max_pp/execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
# There is a lot of overlap with the divertor monoblock case, but the terms defined there for the temperature profile and tritium flux are unused here.
# Add them to the dummy postprocessor so the parser does not complain.
Postprocessors/unused_parameters/expression := '${plasma_max_flux} + ${plasma_min_flux} + ${temperature_initial} + ${temperature_coolant_max} + ${num_sectors}
+ ${rings_H2O} + ${rings_CuCrZr} + ${rings_Cu} + ${rings_W}'
[Postprocessors]
[time_max_T_W]
type = TimeExtremeValue
postprocessor = max_temperature_W
output_type = extreme_value
value_type = max
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[time_max_T_Cu]
type = TimeExtremeValue
postprocessor = max_temperature_Cu
output_type = extreme_value
value_type = max
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[time_max_T_CuCrZr]
type = TimeExtremeValue
postprocessor = max_temperature_CuCrZr
output_type = extreme_value
value_type = max
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[]
VectorPostprocessors/line/execute_on := 'NONE'
Materials/thermal_conductivity_W/expression := '${W_cond_factor}*(2.41e2 - 2.90e-1 * temperature + 2.54e-4 * temperature^2 - 1.03e-7 * temperature^3 + 1.52e-11 * temperature^4)'
[Outputs]
execute_on = 'none'
[]
[ICs]
[temperature_ic]
type = FunctionIC
function = temperature_steady_state
variable = temperature
[]
[]
Controller input
### This input file defines a sobol indice analysis of the monoblock input file to simulate an
### Edge-Localized Mode transient, with some simplifying assumptions that allow it
### to be run in a short amount of time.
### The physics input file is elm_transient_runner.i
### This file should be called directly by TMAP8, preferably with access to multiple cpus
### Output information including summary statistics can be found in a json file
# Define parameters in one spot for easier reading
peak_flux_value = ${units 1147 MW/m^2 -> W/m^2}
peak_flux_std_deviation = ${units 57.35 MW/m^2 -> W/m^2}
peak_flux_duration_value = ${units 1.32 ms -> s}
peak_flux_duration_std_deviation = ${units 0.066 ms -> s}
coolant_temperature_value = ${units 552 K}
coolant_temperature_std_deviation = ${units 27.6 K}
tungsten_kth_prefactor_lower = 0.9
tungsten_kth_prefactor_upper = 1.0
[StochasticTools<<<{"href": "../../syntax/StochasticTools/index.html"}>>>]
# Designate as the Controller/Main Input
[]
[MultiApps<<<{"href": "../../syntax/MultiApps/index.html"}>>>]
# Designate a subapp to control later
[runner]
type = SamplerFullSolveMultiApp<<<{"description": "Creates a full-solve type sub-application for each row of each Sampler matrix.", "href": "../../source/multiapps/SamplerFullSolveMultiApp.html"}>>>
sampler<<<{"description": "The Sampler object to utilize for creating MultiApps."}>>> = sobol
input_files<<<{"description": "The input file for each App. If this parameter only contains one input file it will be used for all of the Apps. When using 'positions_from_file' it is also admissable to provide one input_file per file."}>>> = 'elm_transient_runner.i'
mode<<<{"description": "The operation mode, 'normal' creates one sub-application for each row in the Sampler and 'batch-reset' and 'batch-restore' creates N sub-applications, where N is the minimum of 'num_rows' in the Sampler and floor(number of processes / min_procs_per_app). To run the rows in the Sampler, 'batch-reset' will destroy and re-create sub-apps as needed, whereas the 'batch-restore' will backup and restore sub-apps to the initial state prior to execution, without destruction."}>>> = batch-reset
keep_full_output_history<<<{"description": "Whether or not to keep the full output history when this multiapp has multiple entries"}>>> = True
[]
[]
[Controls<<<{"href": "../../syntax/Controls/index.html"}>>>]
# Control inputs from Main->Subapp
[cmdline]
type = MultiAppSamplerControl<<<{"description": "Control for modifying the command line arguments of MultiApps.", "href": "../../source/controls/MultiAppSamplerControl.html"}>>>
multi_app<<<{"description": "The name of the MultiApp to control."}>>> = runner
sampler<<<{"description": "The Sampler object to utilize for altering the command line options of the MultiApp."}>>> = sobol
param_names<<<{"description": "The names of the command line parameters to set via the sampled data."}>>> = "elm_value
elm_duration
coolant_temperature
W_cond_factor"
[]
[]
[Distributions<<<{"href": "../../syntax/Distributions/index.html"}>>>]
# Define probability distributions of parameters for sampling
[P_val]
type = Normal<<<{"description": "Normal distribution", "href": "../../source/distributions/Normal.html"}>>>
mean<<<{"description": "Mean (or expectation) of the distribution."}>>> = ${peak_flux_value}
standard_deviation<<<{"description": "Standard deviation of the distribution "}>>> = ${peak_flux_std_deviation}
[]
[P_dur]
type = Normal<<<{"description": "Normal distribution", "href": "../../source/distributions/Normal.html"}>>>
mean<<<{"description": "Mean (or expectation) of the distribution."}>>> = ${peak_flux_duration_value}
standard_deviation<<<{"description": "Standard deviation of the distribution "}>>> = ${peak_flux_duration_std_deviation}
[]
[C_tem]
type = Normal<<<{"description": "Normal distribution", "href": "../../source/distributions/Normal.html"}>>>
mean<<<{"description": "Mean (or expectation) of the distribution."}>>> = ${coolant_temperature_value}
standard_deviation<<<{"description": "Standard deviation of the distribution "}>>> = ${coolant_temperature_std_deviation}
[]
[W_cond]
type = Uniform<<<{"description": "Continuous uniform distribution.", "href": "../../source/distributions/Uniform.html"}>>>
lower_bound<<<{"description": "Distribution lower bound"}>>> = ${tungsten_kth_prefactor_lower}
upper_bound<<<{"description": "Distribution upper bound"}>>> = ${tungsten_kth_prefactor_upper}
[]
[]
[Samplers<<<{"href": "../../syntax/Samplers/index.html"}>>>]
# Sampling methodology using the probability distributions above
[hypercube_1]
type = LatinHypercube<<<{"description": "Latin Hypercube Sampler.", "href": "../../source/samplers/LatinHypercubeSampler.html"}>>>
distributions<<<{"description": "The distribution names to be sampled, the number of distributions provided defines the number of columns per matrix."}>>> = 'P_val P_dur C_tem W_cond'
num_rows<<<{"description": "The size of the square matrix to generate."}>>> = 10
seed<<<{"description": "Random number generator initial seed"}>>> = 1001
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'PRE_MULTIAPP_SETUP'
[]
[hypercube_2]
type = LatinHypercube<<<{"description": "Latin Hypercube Sampler.", "href": "../../source/samplers/LatinHypercubeSampler.html"}>>>
distributions<<<{"description": "The distribution names to be sampled, the number of distributions provided defines the number of columns per matrix."}>>> = 'P_val P_dur C_tem W_cond'
num_rows<<<{"description": "The size of the square matrix to generate."}>>> = 10
seed<<<{"description": "Random number generator initial seed"}>>> = 1002
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'PRE_MULTIAPP_SETUP'
[]
[sobol]
type = Sobol<<<{"description": "Sobol variance-based sensitivity analysis Sampler.", "href": "../../source/samplers/SobolSampler.html"}>>>
sampler_a<<<{"description": "The 'sample' matrix."}>>> = hypercube_1
sampler_b<<<{"description": "The 're-sample' matrix."}>>> = hypercube_2
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'PRE_MULTIAPP_SETUP'
[]
[]
[Transfers<<<{"href": "../../syntax/Transfers/index.html"}>>>]
# Define values to extract from subapp
[results]
type = SamplerReporterTransfer<<<{"description": "Transfers data from Reporters on the sub-application to a StochasticReporter on the main application.", "href": "../../source/transfers/SamplerReporterTransfer.html"}>>>
from_multi_app<<<{"description": "The name of the MultiApp to receive data from"}>>> = runner
sampler<<<{"description": "A the Sampler object that Transfer is associated.."}>>> = sobol
stochastic_reporter<<<{"description": "The name of the StochasticReporter object to transfer values to."}>>> = results
#execute_on = 'MULTIAPP_FIXED_POINT_END'
from_reporter<<<{"description": "The name(s) of the Reporter(s) on the sub-app to transfer from."}>>> = "F_permeation/value
Scaled_Tritium_Flux/value
total_retention/value
coolant_heat_flux/value
max_temperature_W/value
max_temperature_Cu/value
max_temperature_CuCrZr/value
time_max_T_W/value
time_max_T_Cu/value
time_max_T_CuCrZr/value"
[]
[matrix_results]
type = SamplerReporterTransfer<<<{"description": "Transfers data from Reporters on the sub-application to a StochasticReporter on the main application.", "href": "../../source/transfers/SamplerReporterTransfer.html"}>>>
from_multi_app<<<{"description": "The name of the MultiApp to receive data from"}>>> = runner
sampler<<<{"description": "A the Sampler object that Transfer is associated.."}>>> = sobol
stochastic_reporter<<<{"description": "The name of the StochasticReporter object to transfer values to."}>>> = matrix
from_reporter<<<{"description": "The name(s) of the Reporter(s) on the sub-app to transfer from."}>>> = "F_permeation/value
Scaled_Tritium_Flux/value
total_retention/value
coolant_heat_flux/value
max_temperature_W/value
max_temperature_Cu/value
max_temperature_CuCrZr/value
time_max_T_W/value
time_max_T_Cu/value
time_max_T_CuCrZr/value"
[]
[]
[Reporters<<<{"href": "../../syntax/Reporters/index.html"}>>>]
[results]
type = StochasticReporter<<<{"description": "Storage container for stochastic simulation results coming from Reporters.", "href": "../../source/reporters/StochasticReporter.html"}>>>
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'FINAL' # INITIAL TIMESTEP_END MULTIAPP_FIXED_POINT_END
[]
[stats]
type = StatisticsReporter<<<{"description": "Compute statistical values of a given VectorPostprocessor objects and vectors.", "href": "../../source/reporters/StatisticsReporter.html"}>>>
reporters<<<{"description": "List of Reporter values to utilized for statistic computations."}>>> = "results/results:F_permeation:value
results/results:Scaled_Tritium_Flux:value
results/results:total_retention:value
results/results:coolant_heat_flux:value
results/results:max_temperature_W:value
results/results:max_temperature_Cu:value
results/results:max_temperature_CuCrZr:value
results/results:time_max_T_W:value
results/results:time_max_T_Cu:value
results/results:time_max_T_CuCrZr:value"
compute<<<{"description": "The statistic(s) to compute for each of the supplied vector postprocessors."}>>> = 'mean stddev'
ci_method<<<{"description": "The method to use for computing confidence level intervals."}>>> = 'percentile'
ci_levels<<<{"description": "A vector of confidence levels to consider, values must be in (0, 1)."}>>> = "0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50
0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95"
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'FINAL'
[]
[sobol]
type = SobolReporter<<<{"description": "Compute SOBOL statistics values of a given VectorPostprocessor or Reporter objects and vectors.", "href": "../../source/reporters/SobolReporter.html"}>>>
sampler<<<{"description": "SobolSampler object."}>>> = sobol
reporters<<<{"description": "List of Reporter values to utilized for statistic computations."}>>> = "results/results:F_permeation:value
results/results:Scaled_Tritium_Flux:value
results/results:total_retention:value
results/results:coolant_heat_flux:value
results/results:max_temperature_W:value
results/results:max_temperature_Cu:value
results/results:max_temperature_CuCrZr:value
results/results:time_max_T_W:value
results/results:time_max_T_Cu:value
results/results:time_max_T_CuCrZr:value"
ci_levels<<<{"description": "A vector of confidence levels to consider, values must be in (0, 1)."}>>> = "0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50
0.55 0.60 0.65 0.70 0.75 0.80 0.85 0.90 0.95"
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'FINAL'
[]
[matrix]
type = StochasticMatrix<<<{"description": "Tool for extracting Sampler object data and storing data from stochastic simulations.", "href": "../../source/reporters/StochasticMatrix.html"}>>>
sampler<<<{"description": "The sample from which to extract distribution data."}>>> = sobol
sampler_column_names<<<{"description": "Prescribed names of sampler columns, used to assign names of outputted vectors."}>>> = "peak_value
peak_duration
coolant_temperature
W_cond_factor"
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'FINAL'
parallel_type<<<{"description": "This parameter will determine how the stochastic data is gathered. It is common for outputting purposes that this parameter be set to ROOT, otherwise, many files will be produced showing the values on each processor. However, if there are lot of samples, gathering on root may be memory restrictive."}>>> = ROOT
[]
[]
[Outputs<<<{"href": "../../syntax/Outputs/index.html"}>>>]
[out]
type = JSON<<<{"description": "Output for Reporter values using JSON format.", "href": "../../source/outputs/JSONOutput.html"}>>>
distributed<<<{"description": "Whether or not to output distributed data (data not on rank 0)"}>>> = False
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'FINAL'
execute_reporters_on<<<{"description": "Control of when Reporter values are output"}>>> = 'FINAL'
[]
[]References
- Salah El-Din El-Morshedy.
Thermal-hydraulic simulation of ITER tungsten divertor monoblock for loss of flow transient.
Nuclear Materials and Energy, 38:101616, 2024.
URL: https://www.sciencedirect.com/science/article/pii/S2352179124000383, doi:https://doi.org/10.1016/j.nme.2024.101616.[Export]
- Takeshi Hirai, V. Barabash, F. Escourbiac, A. Fedosov, L. Ferrand, S. Gicquel, T. Jokinen, V. Komarov, A. Martin, and M. Merola.
Design and integration of ITER divertor components.
Advances in Science and Technology, 73:1–10, 2010.
doi:10.4028/www.scientific.net/AST.73.1.[Export]
- E. A. Hodille, R. Delaporte-Mathurin, J. Denis, M. Pecovnik, E. Bernard, Y. Ferro, R. Sakamoto, Y. Charles, J. Mougenot, A. De Backer, C. S. Becquart, S. Markelj, and C. Grisolia.
Modelling of hydrogen isotopes trapping, diffusion and permeation in divertor monoblocks under ITER-like conditions.
Nuclear Fusion, 61:126003, 10 2021.
URL: https://iopscience.iop.org/article/10.1088/1741-4326/ac2abc, doi:10.1088/1741-4326/AC2ABC.[Export]
- C. E. Kessel, M. S. Tillack, and J. P. Blanchard.
The Evaluation of the Heat Loading from Steady, Transient and Off-Normal Conditions in ARIES Power Plants.
Fusion Science and Technology, 64(3):440–448, 2013.
URL: https://doi.org/10.13182/FST12-538, arXiv:https://doi.org/10.13182/FST12-538, doi:10.13182/FST12-538.[Export]
- A. Loarte, G. Huijsmans, S. Futatani, L. R. Baylor, T. E. Evans, D. M. Orlov, O. Schmitz, M. Becoulet, P. Cahyna, Y. Gribov, A. Kavin, A. Sashala Naik, D. J. Campbell, T. Casper, E. Daly, H. Frerichs, A. Kischner, R. Laengner, S. Lisgo, R. A. Pitts, G. Saibene, and A. Wingen.
Progress on the application of ELM control schemes to ITER scenarios from the non-active phase to DT operation.
Nuclear Fusion, 2014.
doi:10.1088/0029-5515/54/3/033007.[Export]
- R. A. Pitts, A. Kukushkin, A. Loarte, A. Martin, M. Merola, C. E. Kessel, V. Komarov, and M. Shimada.
Status and physics basis of the ITER divertor.
Physica Scripta, 2009.
doi:10.1088/0031-8949/2009/t138/014001.[Export]
- Andrea Saltelli.
Making best use of model evaluations to compute sensitivity indices.
Computer Physics Communications, 145(2):280–297, 2002.
URL: https://www.sciencedirect.com/science/article/pii/S0010465502002801, doi:https://doi.org/10.1016/S0010-4655(02)00280-1.[Export]
- Masashi Shimada, Pierre-Clément A. Simon, Casey T. Icenhour, and Gyanender Singh.
Toward a high-fidelity tritium transport modeling for retention and permeation experiments.
Fusion Engineering and Design, 203:114438, 6 2024.
URL: https://linkinghub.elsevier.com/retrieve/pii/S0920379624002916, doi:10.1016/J.FUSENGDES.2024.114438.[Export]