Divertor Monoblock During Pulsed Operation
TMAP8 is used to model tritium transport in a divertor monoblock to elucidate the effects of pulsed operation (up to fifty 1600-second plasma discharge and cool-down cycles) on the tritium in-vessel inventory source term and ex-vessel release term (i.e., tritium retention and permeation) for safety analysis. This example reproduces the results presented in Shimada et al. (2024).
This case is also available on the Virtual Test Bed (VTB) (Charlot et al., 2025).
General description of the simulation case and corresponding input file
Introduction
In a magnetic confinement fusion system, the divertor components will be subjected to intense particle and heat fluxes from plasma, as well as 14-MeV neutrons stemming from deuterium-tritium (D-T) reactions, thus creating extremely high temperature and hydrogen concentration gradients across tens of millimeters. Furthermore, the thermomechanical properties of the divertor materials will evolve over time in response to displacement damage and gas/solid transmutations. Thus, predictive modeling of tritium transport in the divertor poses enormous challenges, as it requires simulation capabilities capable of (1) multi-material configurations, (2) high thermal cycles, (3) complex 2D and 3D geometries, (4) and microstructural evolution resulting from displacement damage and gas/solid transmutations. For example, the ITER divertor, which consists of tungsten (W) monoblocks bonded to cooling tubes made of copper-chromium-zirconium (CuCrZr) alloy, is designed to withstand high heat fluxes (∼10 MW ) during steady-state plasma operation from intense D-T plasma flux (∼1024 ). In this example, we simulate tritium retention and permeation as well as thermal transport in an ITER-like 2D W-Cu-CuCrZr monoblock and demonstrate the first three (out of four) aforementioned required simulation capabilities for tritium transport in the divertor using TMAP8, as presented in Shimada et al. (2024). This simulation was also based on the cases published in Hodille et al. (2021).
The sections below describe the simulation details and explain how they translate into the example TMAP8 input file. Not every part of the input file is explained here. If the interested reader has more questions about this example case and how to modify this input file to adapt it to a different case, feel free to reach out to the TMAP8 development team on the TMAP8 GitHub discussion page.
Divertor monoblock geometry and mesh generation
Figure 1 shows the geometry, mesh, and temperature distribution of the 2D monoblock employed in Shimada et al. (2024) and in the present example. The 2D monoblock consisted of three materials:
W monoblock ( (mm) > 8.5),
Cu interlayer (7.5 < (mm) < 8.5),
CuCrZr tube (6.0 < (mm) < 7.5), and
HO cooling ( (mm) < 6.0),
where in a Cartesian coordinate system, and the center point (, ) = (0, 0) is defined at the center of the CuCrZr tube.
.](../figures/divertor_monoblock_mesh.png)
Figure 1: 2D monoblock: (left) geometry and mesh; (right) temperature distribution. This corresponds to Fig. 1 in Ref. Shimada et al. (2024).
MOOSE is equipped with a set of user-friendly, built-in mesh generators for creating meshes based on simple geometries (e.g., a monoblock). The built-in mesh generator ConcentricCircleMeshGenerator is used to create meshes for the 2D monoblock geometry. Only the left-hand (−14.0 < (mm) < 0 & −14.0 < (mm) < 14.0) portion of the monoblock is used, such that the mesh size is halved by assuming symmetry at the plane. This example uses a total of 9,418 nodes, creating 28,402 degrees of freedom in the non-linear system. The finer mesh size and time step are required to compute the trapping-limited diffusion regime, as described in TMAP8 verification case ver-1d. However, a set of relatively low detrapping energies (< 0.85 eV) is used here to reduce the computing time via the relatively coarse mesh size.
In the input file, the mesh is defined as:
[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
[ccmg]
type = ConcentricCircleMeshGenerator<<<{"description": "This ConcentricCircleMeshGenerator source code is to generate concentric circle meshes.", "href": "../../source/meshgenerators/ConcentricCircleMeshGenerator.html"}>>>
num_sectors<<<{"description": "num_sectors % 2 = 0, num_sectors > 0Number of azimuthal sectors in each quadrant'num_sectors' must be an even number."}>>> = ${num_sectors}
rings<<<{"description": "Number of rings in each circle or in the enclosing square"}>>> = '${rings_H2O} ${rings_CuCrZr} ${rings_Cu} ${rings_W}'
radii<<<{"description": "Radii of major concentric circles"}>>> = '${radius_coolant} ${radius_CuCrZr} ${radius_Cu}'
has_outer_square<<<{"description": "It determines if meshes for a outer square are added to concentric circle meshes."}>>> = on
pitch<<<{"description": "The enclosing square can be added to the completed concentric circle mesh.Elements are quad meshes."}>>> = '${fparse block_size}'
portion<<<{"description": "Control of which part of mesh is created"}>>> = left_half
preserve_volumes<<<{"description": "Volume of concentric circles can be preserved using this function."}>>> = false
smoothing_max_it<<<{"description": "Number of Laplacian smoothing iterations"}>>> = 3
[]
[ssbsg1]
type = SideSetsBetweenSubdomainsGenerator<<<{"description": "MeshGenerator that creates a sideset composed of the nodes located between two or more subdomains.", "href": "../../source/meshgenerators/SideSetsBetweenSubdomainsGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = ccmg
primary_block<<<{"description": "The primary set of blocks for which to draw a sideset between"}>>> = '4' # W
paired_block<<<{"description": "The paired set of blocks for which to draw a sideset between"}>>> = '3' # Cu
new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = '4to3'
[]
[ssbsg2]
type = SideSetsBetweenSubdomainsGenerator<<<{"description": "MeshGenerator that creates a sideset composed of the nodes located between two or more subdomains.", "href": "../../source/meshgenerators/SideSetsBetweenSubdomainsGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = ssbsg1
primary_block<<<{"description": "The primary set of blocks for which to draw a sideset between"}>>> = '3' # Cu
paired_block<<<{"description": "The paired set of blocks for which to draw a sideset between"}>>> = '4' # W
new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = '3to4'
[]
[ssbsg3]
type = SideSetsBetweenSubdomainsGenerator<<<{"description": "MeshGenerator that creates a sideset composed of the nodes located between two or more subdomains.", "href": "../../source/meshgenerators/SideSetsBetweenSubdomainsGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = ssbsg2
primary_block<<<{"description": "The primary set of blocks for which to draw a sideset between"}>>> = '3' # Cu
paired_block<<<{"description": "The paired set of blocks for which to draw a sideset between"}>>> = '2' # CuCrZr
new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = '3to2'
[]
[ssbsg4]
type = SideSetsBetweenSubdomainsGenerator<<<{"description": "MeshGenerator that creates a sideset composed of the nodes located between two or more subdomains.", "href": "../../source/meshgenerators/SideSetsBetweenSubdomainsGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = ssbsg3
primary_block<<<{"description": "The primary set of blocks for which to draw a sideset between"}>>> = '2' # CuCrZr
paired_block<<<{"description": "The paired set of blocks for which to draw a sideset between"}>>> = '3' # Cu
new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = '2to3'
[]
[ssbsg5]
type = SideSetsBetweenSubdomainsGenerator<<<{"description": "MeshGenerator that creates a sideset composed of the nodes located between two or more subdomains.", "href": "../../source/meshgenerators/SideSetsBetweenSubdomainsGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = ssbsg4
primary_block<<<{"description": "The primary set of blocks for which to draw a sideset between"}>>> = '2' # CuCrZr
paired_block<<<{"description": "The paired set of blocks for which to draw a sideset between"}>>> = '1' # H2O
new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = '2to1'
[]
[bdg]
type = BlockDeletionGenerator<<<{"description": "Mesh generator which removes elements from the specified subdomains", "href": "../../source/meshgenerators/BlockDeletionGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = ssbsg5
block<<<{"description": "The list of blocks to be processed (deleted or kept)"}>>> = '1' # H2O
[]
[]Nomenclature of variables and physical parameters
Table 1 lists the variables and physical parameters used in this example with their units.
Table 1: Nomenclature of variables and physical parameters used in this example.
| Symbol | Variable or Physical Property | Unit |
|---|---|---|
| Concentration of solute (mobile) species | m | |
| Concentration of trapped species | m | |
| Temperature | K | |
| Diffusivity of solute (mobile) species | m s | |
| Solubility of solute (mobile) species | m Pa | |
| Total concentration of species | m | |
| Concentration of empty trapping sites | m | |
| Concentration of trapping sites | m | |
| Trapping rate coefficient, | s | |
| Release rate coefficient | s | |
| Pre-exponential factor, | s | |
| Detrapping energy | eV | |
| Atomic number density | m | |
| Density | kg m | |
| Specific heat | J kg K | |
| Thermal conductivity | W m K |
The equivalent table in Ambrosek and Longhurst (2008) has a typographical error: It lists the density in g m when the correct unit, used in Table 1, is kg m. This does not, however, change the results since the value used for the density was correct and used the proper unit.
Variables and governing equations
To simulate tritium and thermal transport, we define two sets of partial differential equations (PDEs). First, the strong form of the mass conservation equation for solute (mobile) T atoms, , is written as:
(1)
We use three sets of mass conservation equations to calculate the behaviors of solute T atoms in three different materials (i.e., W, Cu, CuCrZr). Second, the strong form of the conservation of energy equation is written as:
(2)
Table 1 lists all the symbols and definitions used in Eq. (1) and Eq. (2).
The next step is to convert these two strong-form PDEs into their weak forms by multiplying with a test function, , and integrating over a domain, with surface and outward-facing normal vector . Using the divergence theorem, one can obtain the weak form of the mass conservation equation (Eq. (1)) as follows:
(3)
Similarly, the weak form of the conservation of energy equation can be written by multiplying Eq. (2) with a test function, , and integrating over a domain, with surface and outward-facing normal vector . Using the divergence theorem, one can obtain the weak form of the conservation of energy equation as follows:
(4)
Then, to solve for the PDEs and physical phenomena, we can select appropriate kernels and boundary conditions (BCs) from MOOSE’s extensive library. The following three subsections describe each kernel, BC, and numerical method utilized in the present work.
In the input file, the variables are defined as:
[AuxVariables<<<{"href": "../../syntax/AuxVariables/index.html"}>>>]
[flux_y]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = FIRST
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
[]
############################## AuxVariables for W (block = 4)
[Sc_C_mobile_W]
block = 4
[]
[Sc_C_trapped_W]
block = 4
[]
[C_total_W]
block = 4
[]
[Sc_C_total_W]
block = 4
[]
[S_empty_W]
block = 4
[]
[Sc_S_empty_W]
block = 4
[]
[S_trapped_W]
block = 4
[]
[Sc_S_trapped_W]
block = 4
[]
[S_total_W]
block = 4
[]
[Sc_S_total_W]
block = 4
[]
############################## AuxVariables for Cu (block = 3)
[Sc_C_mobile_Cu]
block = 3
[]
[Sc_C_trapped_Cu]
block = 3
[]
[C_total_Cu]
block = 3
[]
[Sc_C_total_Cu]
block = 3
[]
[S_empty_Cu]
block = 3
[]
[Sc_S_empty_Cu]
block = 3
[]
[S_trapped_Cu]
block = 3
[]
[Sc_S_trapped_Cu]
block = 3
[]
[S_total_Cu]
block = 3
[]
[Sc_S_total_Cu]
block = 3
[]
############################## AuxVariables for CuCrZr (block = 2)
[Sc_C_mobile_CuCrZr]
block = 2
[]
[Sc_C_trapped_CuCrZr]
block = 2
[]
[C_total_CuCrZr]
block = 2
[]
[Sc_C_total_CuCrZr]
block = 2
[]
[S_empty_CuCrZr]
block = 2
[]
[Sc_S_empty_CuCrZr]
block = 2
[]
[S_trapped_CuCrZr]
block = 2
[]
[Sc_S_trapped_CuCrZr]
block = 2
[]
[S_total_CuCrZr]
block = 2
[]
[Sc_S_total_CuCrZr]
block = 2
[]
[]Note the usage of initial_condition and block parameters in order to set initial conditions and material block applicability for each variable.
Kernels
For the mass conservation equation, we use ADTimeDerivative and MatDiffusion to represent the 1 and 3 terms of Eq. (3). The TMAP8 kernels TrappingNodalKernel and ReleasingNodalKernel represent the 4 and 5 terms of Eq. (3), respectively, and simulate the trapping/release behavior of hydrogen isotopes in/from trap sites. For the conservation of energy equation, SpecificHeatConductionTimeDerivative and HeatConduction solve the 1 and 3 terms of Eq. (4). ADTimeDerivative and ADMatDiffusion are kernels from the core MOOSE framework, and SpecificHeatConductionTimeDerivative and HeatConduction are kernels from the MOOSE Heat Transfer Module. These pre-made kernels are commonly re-used to represent time derivative, diffusion, and heat conduction terms in a given material within a variety of MOOSE-based simulations.
[AuxKernels<<<{"href": "../../syntax/AuxKernels/index.html"}>>>]
############################## AuxKernels for W (block = 4)
[Scaled_mobile_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_mobile_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_mobile_W
[]
[Scaled_trapped_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_trapped_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_trapped_W
[]
[total_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = C_total_W
type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../source/auxkernels/ParsedAux.html"}>>>
expression<<<{"description": "Parsed function expression to compute"}>>> = 'C_mobile_W + C_trapped_W'
coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = 'C_mobile_W C_trapped_W'
[]
[Scaled_total_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_total_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_total_W
[]
[empty_sites_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_empty_W
type = EmptySitesAux<<<{"description": "Calculates the concentration of empty trapping sites.", "href": "../../source/auxkernels/EmptySitesAux.html"}>>>
N<<<{"description": "The atomic number density of the host material (1/m^3)"}>>> = ${N_W}
Ct0<<<{"description": "The fraction of host sites that can contribute to trapping as a function (-)"}>>> = ${Ct0_W}
trap_per_free<<<{"description": "An estimate for the ratio of the concentration magnitude of trapped species to free species. Setting a value for this can be helpful in producing a well-scaled matrix"}>>> = ${trap_per_free_W}
trapped_concentration_variables<<<{"description": "Variables representing trapped particle concentrations."}>>> = C_trapped_W
[]
[scaled_empty_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_empty_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_empty_W
[]
[trapped_sites_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_trapped_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = 1e0
source_variable<<<{"description": "The variable to be normalized"}>>> = C_trapped_W
[]
[scaled_trapped_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_trapped_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_trapped_W
[]
[total_sites_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_total_W
type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../source/auxkernels/ParsedAux.html"}>>>
expression<<<{"description": "Parsed function expression to compute"}>>> = 'S_trapped_W + S_empty_W'
coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = 'S_trapped_W S_empty_W'
[]
[scaled_total_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_total_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_total_W
[]
############################## AuxKernels for Cu (block = 3)
[Scaled_mobile_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_mobile_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_mobile_Cu
[]
[Scaled_trapped_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_trapped_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_trapped_Cu
[]
[total_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = C_total_Cu
type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../source/auxkernels/ParsedAux.html"}>>>
expression<<<{"description": "Parsed function expression to compute"}>>> = 'C_mobile_Cu + C_trapped_Cu'
coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = 'C_mobile_Cu C_trapped_Cu'
[]
[Scaled_total_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_total_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_total_Cu
[]
[empty_sites_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_empty_Cu
type = EmptySitesAux<<<{"description": "Calculates the concentration of empty trapping sites.", "href": "../../source/auxkernels/EmptySitesAux.html"}>>>
N<<<{"description": "The atomic number density of the host material (1/m^3)"}>>> = ${N_Cu}
Ct0<<<{"description": "The fraction of host sites that can contribute to trapping as a function (-)"}>>> = ${Ct0_Cu}
trap_per_free<<<{"description": "An estimate for the ratio of the concentration magnitude of trapped species to free species. Setting a value for this can be helpful in producing a well-scaled matrix"}>>> = ${trap_per_free_Cu}
trapped_concentration_variables<<<{"description": "Variables representing trapped particle concentrations."}>>> = C_trapped_Cu
[]
[scaled_empty_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_empty_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_empty_Cu
[]
[trapped_sites_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_trapped_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = 1e0
source_variable<<<{"description": "The variable to be normalized"}>>> = C_trapped_Cu
[]
[scaled_trapped_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_trapped_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_trapped_Cu
[]
[total_sites_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_total_Cu
type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../source/auxkernels/ParsedAux.html"}>>>
expression<<<{"description": "Parsed function expression to compute"}>>> = 'S_trapped_Cu + S_empty_Cu'
coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = 'S_trapped_Cu S_empty_Cu'
[]
[scaled_total_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_total_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_total_Cu
[]
############################## AuxKernels for CuCrZr (block = 2)
[Scaled_mobile_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_mobile_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_mobile_CuCrZr
[]
[Scaled_trapped_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_trapped_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_trapped_CuCrZr
[]
[total_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = C_total_CuCrZr
type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../source/auxkernels/ParsedAux.html"}>>>
expression<<<{"description": "Parsed function expression to compute"}>>> = 'C_mobile_CuCrZr + C_trapped_CuCrZr'
coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = 'C_mobile_CuCrZr C_trapped_CuCrZr'
[]
[Scaled_total_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_total_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_total_CuCrZr
[]
[empty_sites_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_empty_CuCrZr
type = EmptySitesAux<<<{"description": "Calculates the concentration of empty trapping sites.", "href": "../../source/auxkernels/EmptySitesAux.html"}>>>
N<<<{"description": "The atomic number density of the host material (1/m^3)"}>>> = ${N_CuCrZr}
Ct0<<<{"description": "The fraction of host sites that can contribute to trapping as a function (-)"}>>> = ${Ct0_CuCrZr}
trap_per_free<<<{"description": "An estimate for the ratio of the concentration magnitude of trapped species to free species. Setting a value for this can be helpful in producing a well-scaled matrix"}>>> = ${trap_per_free_CuCrZr}
trapped_concentration_variables<<<{"description": "Variables representing trapped particle concentrations."}>>> = C_trapped_CuCrZr
[]
[scaled_empty_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_empty_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_empty_CuCrZr
[]
[trapped_sites_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_trapped_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = 1e0
source_variable<<<{"description": "The variable to be normalized"}>>> = C_trapped_CuCrZr
[]
[scaled_trapped_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_trapped_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_trapped_CuCrZr
[]
[total_sites_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_total_CuCrZr
type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../source/auxkernels/ParsedAux.html"}>>>
expression<<<{"description": "Parsed function expression to compute"}>>> = 'S_trapped_CuCrZr + S_empty_CuCrZr'
coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = 'S_trapped_CuCrZr S_empty_CuCrZr'
[]
[scaled_total_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_total_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_total_CuCrZr
[]
[flux_y_W]
type = DiffusionFluxAux<<<{"description": "Compute components of flux vector for diffusion problems $(\\vec{J} = -D \\nabla C)$.", "href": "../../source/auxkernels/DiffusionFluxAux.html"}>>>
diffusivity<<<{"description": "The name of the diffusivity material property that will be used in the flux computation."}>>> = diffusivity_W
variable<<<{"description": "The name of the variable that this object applies to"}>>> = flux_y
diffusion_variable<<<{"description": "The name of the variable"}>>> = C_mobile_W
component<<<{"description": "The desired component of flux."}>>> = y
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 4
[]
[flux_y_Cu]
type = DiffusionFluxAux<<<{"description": "Compute components of flux vector for diffusion problems $(\\vec{J} = -D \\nabla C)$.", "href": "../../source/auxkernels/DiffusionFluxAux.html"}>>>
diffusivity<<<{"description": "The name of the diffusivity material property that will be used in the flux computation."}>>> = diffusivity_Cu
variable<<<{"description": "The name of the variable that this object applies to"}>>> = flux_y
diffusion_variable<<<{"description": "The name of the variable"}>>> = C_mobile_Cu
component<<<{"description": "The desired component of flux."}>>> = y
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 3
[]
[flux_y_CuCrZr]
type = DiffusionFluxAux<<<{"description": "Compute components of flux vector for diffusion problems $(\\vec{J} = -D \\nabla C)$.", "href": "../../source/auxkernels/DiffusionFluxAux.html"}>>>
diffusivity<<<{"description": "The name of the diffusivity material property that will be used in the flux computation."}>>> = diffusivity_CuCrZr
variable<<<{"description": "The name of the variable that this object applies to"}>>> = flux_y
diffusion_variable<<<{"description": "The name of the variable"}>>> = C_mobile_CuCrZr
component<<<{"description": "The desired component of flux."}>>> = y
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 2
[]
[]NodalKernels are used for non-diffusive variables (trapped species).
[NodalKernels<<<{"href": "../../syntax/NodalKernels/index.html"}>>>]
############################## NodalKernels for W (block = 4)
[time_W]
type = TimeDerivativeNodalKernel<<<{"description": "Forms the contribution to the residual and jacobian of the time derivative term from an ODE being solved at all nodes.", "href": "../../source/nodalkernels/TimeDerivativeNodalKernel.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = C_trapped_W
[]
[trapping_W]
type = TrappingNodalKernel<<<{"description": "Implements a residual describing the trapping of a species in a material.", "href": "../../source/nodal_kernels/TrappingNodalKernel.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = C_trapped_W
temperature<<<{"description": "The temperature (K)"}>>> = temperature
alpha_t<<<{"description": "The trapping rate coefficient. This has units of 1/s (e.g. no number densities are involved)"}>>> = ${alpha_t}
N<<<{"description": "The atomic number density of the host material (1/m^3)"}>>> = ${N_W}
Ct0<<<{"description": "The fraction of host sites that can contribute to trapping as a function (-)"}>>> = ${Ct0_W}
trapping_energy<<<{"description": "The trapping energy (K)"}>>> = ${trapping_energy}
trap_per_free<<<{"description": "An estimate for the ratio of the concentration magnitude of trapped species to free species. Setting a value for this can be helpful in producing a well-scaled matrix (-)"}>>> = ${trap_per_free_W}
mobile_concentration<<<{"description": "The variable representing the mobile concentration of solute particles."}>>> = 'C_mobile_W'
extra_vector_tags<<<{"description": "The extra tags for the vectors this Kernel should fill"}>>> = ref
[]
[release_W]
type = ReleasingNodalKernel<<<{"description": "Implements a residual describing the release of trapped species in a material.", "href": "../../source/nodal_kernels/ReleasingNodalKernel.html"}>>>
alpha_r<<<{"description": "The release rate coefficient (1/s)"}>>> = ${alpha_r}
temperature<<<{"description": "The temperature (K)"}>>> = temperature
detrapping_energy<<<{"description": "The detrapping energy (K)"}>>> = ${detrapping_energy_W}
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = C_trapped_W
[]
############################## NodalKernels for Cu (block = 3)
[time_Cu]
type = TimeDerivativeNodalKernel<<<{"description": "Forms the contribution to the residual and jacobian of the time derivative term from an ODE being solved at all nodes.", "href": "../../source/nodalkernels/TimeDerivativeNodalKernel.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = C_trapped_Cu
[]
[trapping_Cu]
type = TrappingNodalKernel<<<{"description": "Implements a residual describing the trapping of a species in a material.", "href": "../../source/nodal_kernels/TrappingNodalKernel.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = C_trapped_Cu
temperature<<<{"description": "The temperature (K)"}>>> = temperature
alpha_t<<<{"description": "The trapping rate coefficient. This has units of 1/s (e.g. no number densities are involved)"}>>> = ${alpha_t}
N<<<{"description": "The atomic number density of the host material (1/m^3)"}>>> = ${N_Cu}
Ct0<<<{"description": "The fraction of host sites that can contribute to trapping as a function (-)"}>>> = ${Ct0_Cu}
trapping_energy<<<{"description": "The trapping energy (K)"}>>> = ${trapping_energy}
trap_per_free<<<{"description": "An estimate for the ratio of the concentration magnitude of trapped species to free species. Setting a value for this can be helpful in producing a well-scaled matrix (-)"}>>> = ${trap_per_free_Cu}
mobile_concentration<<<{"description": "The variable representing the mobile concentration of solute particles."}>>> = 'C_mobile_Cu'
extra_vector_tags<<<{"description": "The extra tags for the vectors this Kernel should fill"}>>> = ref
[]
[release_Cu]
type = ReleasingNodalKernel<<<{"description": "Implements a residual describing the release of trapped species in a material.", "href": "../../source/nodal_kernels/ReleasingNodalKernel.html"}>>>
alpha_r<<<{"description": "The release rate coefficient (1/s)"}>>> = ${alpha_r}
temperature<<<{"description": "The temperature (K)"}>>> = temperature
detrapping_energy<<<{"description": "The detrapping energy (K)"}>>> = ${detrapping_energy_Cu}
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = C_trapped_Cu
[]
############################## NodalKernels for CuCrZr (block = 2)
[time_CuCrZr]
type = TimeDerivativeNodalKernel<<<{"description": "Forms the contribution to the residual and jacobian of the time derivative term from an ODE being solved at all nodes.", "href": "../../source/nodalkernels/TimeDerivativeNodalKernel.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = C_trapped_CuCrZr
[]
[trapping_CuCrZr]
type = TrappingNodalKernel<<<{"description": "Implements a residual describing the trapping of a species in a material.", "href": "../../source/nodal_kernels/TrappingNodalKernel.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = C_trapped_CuCrZr
temperature<<<{"description": "The temperature (K)"}>>> = temperature
alpha_t<<<{"description": "The trapping rate coefficient. This has units of 1/s (e.g. no number densities are involved)"}>>> = ${alpha_t}
N<<<{"description": "The atomic number density of the host material (1/m^3)"}>>> = ${N_CuCrZr}
Ct0<<<{"description": "The fraction of host sites that can contribute to trapping as a function (-)"}>>> = ${Ct0_CuCrZr}
trapping_energy<<<{"description": "The trapping energy (K)"}>>> = ${trapping_energy}
trap_per_free<<<{"description": "An estimate for the ratio of the concentration magnitude of trapped species to free species. Setting a value for this can be helpful in producing a well-scaled matrix (-)"}>>> = ${trap_per_free_CuCrZr}
mobile_concentration<<<{"description": "The variable representing the mobile concentration of solute particles."}>>> = 'C_mobile_CuCrZr'
extra_vector_tags<<<{"description": "The extra tags for the vectors this Kernel should fill"}>>> = ref
[]
[release_CuCrZr]
type = ReleasingNodalKernel<<<{"description": "Implements a residual describing the release of trapped species in a material.", "href": "../../source/nodal_kernels/ReleasingNodalKernel.html"}>>>
alpha_r<<<{"description": "The release rate coefficient (1/s)"}>>> = ${alpha_r}
temperature<<<{"description": "The temperature (K)"}>>> = temperature
detrapping_energy<<<{"description": "The detrapping energy (K)"}>>> = ${detrapping_energy_CuCrZr}
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = C_trapped_CuCrZr
[]
[]AuxVariables and AuxKernels
AuxVariables are used to track quantities that are not solved for by the PDEs, but are needed to compute materials properties, or are desirable to obtain as outputs, such as the total concentration of tritium or flux values. AuxKernels provide the expressions that define the AuxVariables.
[AuxVariables<<<{"href": "../../syntax/AuxVariables/index.html"}>>>]
[flux_y]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = FIRST
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
[]
############################## AuxVariables for W (block = 4)
[Sc_C_mobile_W]
block = 4
[]
[Sc_C_trapped_W]
block = 4
[]
[C_total_W]
block = 4
[]
[Sc_C_total_W]
block = 4
[]
[S_empty_W]
block = 4
[]
[Sc_S_empty_W]
block = 4
[]
[S_trapped_W]
block = 4
[]
[Sc_S_trapped_W]
block = 4
[]
[S_total_W]
block = 4
[]
[Sc_S_total_W]
block = 4
[]
############################## AuxVariables for Cu (block = 3)
[Sc_C_mobile_Cu]
block = 3
[]
[Sc_C_trapped_Cu]
block = 3
[]
[C_total_Cu]
block = 3
[]
[Sc_C_total_Cu]
block = 3
[]
[S_empty_Cu]
block = 3
[]
[Sc_S_empty_Cu]
block = 3
[]
[S_trapped_Cu]
block = 3
[]
[Sc_S_trapped_Cu]
block = 3
[]
[S_total_Cu]
block = 3
[]
[Sc_S_total_Cu]
block = 3
[]
############################## AuxVariables for CuCrZr (block = 2)
[Sc_C_mobile_CuCrZr]
block = 2
[]
[Sc_C_trapped_CuCrZr]
block = 2
[]
[C_total_CuCrZr]
block = 2
[]
[Sc_C_total_CuCrZr]
block = 2
[]
[S_empty_CuCrZr]
block = 2
[]
[Sc_S_empty_CuCrZr]
block = 2
[]
[S_trapped_CuCrZr]
block = 2
[]
[Sc_S_trapped_CuCrZr]
block = 2
[]
[S_total_CuCrZr]
block = 2
[]
[Sc_S_total_CuCrZr]
block = 2
[]
[][AuxKernels<<<{"href": "../../syntax/AuxKernels/index.html"}>>>]
############################## AuxKernels for W (block = 4)
[Scaled_mobile_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_mobile_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_mobile_W
[]
[Scaled_trapped_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_trapped_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_trapped_W
[]
[total_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = C_total_W
type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../source/auxkernels/ParsedAux.html"}>>>
expression<<<{"description": "Parsed function expression to compute"}>>> = 'C_mobile_W + C_trapped_W'
coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = 'C_mobile_W C_trapped_W'
[]
[Scaled_total_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_total_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_total_W
[]
[empty_sites_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_empty_W
type = EmptySitesAux<<<{"description": "Calculates the concentration of empty trapping sites.", "href": "../../source/auxkernels/EmptySitesAux.html"}>>>
N<<<{"description": "The atomic number density of the host material (1/m^3)"}>>> = ${N_W}
Ct0<<<{"description": "The fraction of host sites that can contribute to trapping as a function (-)"}>>> = ${Ct0_W}
trap_per_free<<<{"description": "An estimate for the ratio of the concentration magnitude of trapped species to free species. Setting a value for this can be helpful in producing a well-scaled matrix"}>>> = ${trap_per_free_W}
trapped_concentration_variables<<<{"description": "Variables representing trapped particle concentrations."}>>> = C_trapped_W
[]
[scaled_empty_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_empty_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_empty_W
[]
[trapped_sites_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_trapped_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = 1e0
source_variable<<<{"description": "The variable to be normalized"}>>> = C_trapped_W
[]
[scaled_trapped_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_trapped_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_trapped_W
[]
[total_sites_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_total_W
type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../source/auxkernels/ParsedAux.html"}>>>
expression<<<{"description": "Parsed function expression to compute"}>>> = 'S_trapped_W + S_empty_W'
coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = 'S_trapped_W S_empty_W'
[]
[scaled_total_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_total_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_total_W
[]
############################## AuxKernels for Cu (block = 3)
[Scaled_mobile_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_mobile_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_mobile_Cu
[]
[Scaled_trapped_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_trapped_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_trapped_Cu
[]
[total_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = C_total_Cu
type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../source/auxkernels/ParsedAux.html"}>>>
expression<<<{"description": "Parsed function expression to compute"}>>> = 'C_mobile_Cu + C_trapped_Cu'
coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = 'C_mobile_Cu C_trapped_Cu'
[]
[Scaled_total_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_total_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_total_Cu
[]
[empty_sites_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_empty_Cu
type = EmptySitesAux<<<{"description": "Calculates the concentration of empty trapping sites.", "href": "../../source/auxkernels/EmptySitesAux.html"}>>>
N<<<{"description": "The atomic number density of the host material (1/m^3)"}>>> = ${N_Cu}
Ct0<<<{"description": "The fraction of host sites that can contribute to trapping as a function (-)"}>>> = ${Ct0_Cu}
trap_per_free<<<{"description": "An estimate for the ratio of the concentration magnitude of trapped species to free species. Setting a value for this can be helpful in producing a well-scaled matrix"}>>> = ${trap_per_free_Cu}
trapped_concentration_variables<<<{"description": "Variables representing trapped particle concentrations."}>>> = C_trapped_Cu
[]
[scaled_empty_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_empty_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_empty_Cu
[]
[trapped_sites_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_trapped_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = 1e0
source_variable<<<{"description": "The variable to be normalized"}>>> = C_trapped_Cu
[]
[scaled_trapped_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_trapped_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_trapped_Cu
[]
[total_sites_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_total_Cu
type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../source/auxkernels/ParsedAux.html"}>>>
expression<<<{"description": "Parsed function expression to compute"}>>> = 'S_trapped_Cu + S_empty_Cu'
coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = 'S_trapped_Cu S_empty_Cu'
[]
[scaled_total_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_total_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_total_Cu
[]
############################## AuxKernels for CuCrZr (block = 2)
[Scaled_mobile_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_mobile_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_mobile_CuCrZr
[]
[Scaled_trapped_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_trapped_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_trapped_CuCrZr
[]
[total_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = C_total_CuCrZr
type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../source/auxkernels/ParsedAux.html"}>>>
expression<<<{"description": "Parsed function expression to compute"}>>> = 'C_mobile_CuCrZr + C_trapped_CuCrZr'
coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = 'C_mobile_CuCrZr C_trapped_CuCrZr'
[]
[Scaled_total_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_total_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_total_CuCrZr
[]
[empty_sites_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_empty_CuCrZr
type = EmptySitesAux<<<{"description": "Calculates the concentration of empty trapping sites.", "href": "../../source/auxkernels/EmptySitesAux.html"}>>>
N<<<{"description": "The atomic number density of the host material (1/m^3)"}>>> = ${N_CuCrZr}
Ct0<<<{"description": "The fraction of host sites that can contribute to trapping as a function (-)"}>>> = ${Ct0_CuCrZr}
trap_per_free<<<{"description": "An estimate for the ratio of the concentration magnitude of trapped species to free species. Setting a value for this can be helpful in producing a well-scaled matrix"}>>> = ${trap_per_free_CuCrZr}
trapped_concentration_variables<<<{"description": "Variables representing trapped particle concentrations."}>>> = C_trapped_CuCrZr
[]
[scaled_empty_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_empty_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_empty_CuCrZr
[]
[trapped_sites_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_trapped_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = 1e0
source_variable<<<{"description": "The variable to be normalized"}>>> = C_trapped_CuCrZr
[]
[scaled_trapped_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_trapped_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_trapped_CuCrZr
[]
[total_sites_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_total_CuCrZr
type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../source/auxkernels/ParsedAux.html"}>>>
expression<<<{"description": "Parsed function expression to compute"}>>> = 'S_trapped_CuCrZr + S_empty_CuCrZr'
coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = 'S_trapped_CuCrZr S_empty_CuCrZr'
[]
[scaled_total_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_total_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_total_CuCrZr
[]
[flux_y_W]
type = DiffusionFluxAux<<<{"description": "Compute components of flux vector for diffusion problems $(\\vec{J} = -D \\nabla C)$.", "href": "../../source/auxkernels/DiffusionFluxAux.html"}>>>
diffusivity<<<{"description": "The name of the diffusivity material property that will be used in the flux computation."}>>> = diffusivity_W
variable<<<{"description": "The name of the variable that this object applies to"}>>> = flux_y
diffusion_variable<<<{"description": "The name of the variable"}>>> = C_mobile_W
component<<<{"description": "The desired component of flux."}>>> = y
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 4
[]
[flux_y_Cu]
type = DiffusionFluxAux<<<{"description": "Compute components of flux vector for diffusion problems $(\\vec{J} = -D \\nabla C)$.", "href": "../../source/auxkernels/DiffusionFluxAux.html"}>>>
diffusivity<<<{"description": "The name of the diffusivity material property that will be used in the flux computation."}>>> = diffusivity_Cu
variable<<<{"description": "The name of the variable that this object applies to"}>>> = flux_y
diffusion_variable<<<{"description": "The name of the variable"}>>> = C_mobile_Cu
component<<<{"description": "The desired component of flux."}>>> = y
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 3
[]
[flux_y_CuCrZr]
type = DiffusionFluxAux<<<{"description": "Compute components of flux vector for diffusion problems $(\\vec{J} = -D \\nabla C)$.", "href": "../../source/auxkernels/DiffusionFluxAux.html"}>>>
diffusivity<<<{"description": "The name of the diffusivity material property that will be used in the flux computation."}>>> = diffusivity_CuCrZr
variable<<<{"description": "The name of the variable that this object applies to"}>>> = flux_y
diffusion_variable<<<{"description": "The name of the variable"}>>> = C_mobile_CuCrZr
component<<<{"description": "The desired component of flux."}>>> = y
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 2
[]
[]Boundary conditions and history
For the mass conservation equation, we use FunctionNeumannBC and DirichletBC to solve the 2 term of Eq. (3). FunctionNeumannBC is used to treat the time-dependent plasma exposure at the top (plasma-exposed) surface, and DirichletBC is used to set the BC of the solute T atom concentration to zero at the inner CuCrZr tube (at mm). For the energy conservation equation, we use FunctionNeumannBC and DirichletBC to solve the 2 term of Eq. (4). FunctionNeumannBC is used to treat the time-dependent heat flux at the top (plasma-exposed) surface, and FunctionDirichletBC is used to treat the temperature increase in the cooling tube. FunctionNeumannBC, FunctionDirichletBC, DirichletBC, and FunctionDirichletBC are MOOSE objects commonly used to represent the BCs of the variables to be solved.
We simulate a 20,000-second plasma discharge, with each 1,600-second cycle consisting of a 100-second plasma ramp-up, a 400-second steady-state plasma discharge, a 100-second plasma ramp-down, and a 1,000-second waiting phase. Up to 50 cycles are simulated to achieve the total discharge. Figure 2 shows the integrated (solute, total and trapped) tritium concentration profiles in the monoblock. It shows that implantation fluxes and temperatures vary linearly up to (from) their steady-state values from (up to) their initial values during ramp-up (ramp-down).
.](../figures/divertor_monoblock_history.png)
Figure 2: Temperature profiles (orange) and integrated tritium concentration profiles (blue) during two 1,600-second-cycle plasma discharges. This corresponds to Fig. 2 in Shimada et al. (2024).
During the steady-state plasma discharge, we set a heat flux of 10 MWm at the top of the 2D monoblock (at mm) and a cooling temperature of 552 K at the inner CuCrZr tube (at mm). We assume a 100% T plasma with a 5.0 10 ms plasma particle flux (which is half of the full 1.0 10 ms DT plasma particle flux), and only 0.1% of the incident plasma particle flux (5.0 10 ms) entered the first layer of mesh at the exposed surface ( mm) as in Shimada et al. (2024). The solute T atom concentration is set to zero at the inner CuCrZr tube (at mm).
We treated this plasma exposure by setting the flux BC of the solute T atom concentration at the exposed surface ( mm) as a simplification of the complex plasma implantation and recombination phenomena, which would require a very fine mesh and increase computational costs.
Since publication, the input file has been updated to fix a small typo that has a minor, almost insignificant effect on the results. The typo set the heat flux to be equal to 300 W/m while the pulse was off, as opposed to being equal to 0 W/m. This was likely due to a mistake in using the off-pulse temperature of the cooling channel (300 K) rather than the zero flux. The change from 300 W/m to 0 W/m was observed to be negligible, which is attributed to the fact that 300 W/m is a small value in this scenario. For context, the maximum heat flux value is 1 W/m. The current version of the input file uses 0 W/m.
[BCs<<<{"href": "../../syntax/BCs/index.html"}>>>]
[C_mob_W_top_flux]
type = FunctionNeumannBC<<<{"description": "Imposes the integrated boundary condition $\\frac{\\partial u}{\\partial n}=h(t,\\vec{x})$, where $h$ is a (possibly) time and space-dependent MOOSE Function.", "href": "../../source/bcs/FunctionNeumannBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = C_mobile_W
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'top'
function<<<{"description": "The function."}>>> = mobile_flux_bc_function
[]
[mobile_tube]
type = DirichletBC<<<{"description": "Imposes the essential boundary condition $u=g$, where $g$ is a constant, controllable value.", "href": "../../source/bcs/DirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = C_mobile_CuCrZr
value<<<{"description": "Value of the BC"}>>> = ${C_mobile_CuCrZr_DirichletBC_Coolant}
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = '2to1'
[]
[temperature_top]
type = FunctionNeumannBC<<<{"description": "Imposes the integrated boundary condition $\\frac{\\partial u}{\\partial n}=h(t,\\vec{x})$, where $h$ is a (possibly) time and space-dependent MOOSE Function.", "href": "../../source/bcs/FunctionNeumannBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = temperature
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'top'
function<<<{"description": "The function."}>>> = temperature_flux_bc_function
[]
[temperature_tube]
type = FunctionDirichletBC<<<{"description": "Imposes the essential boundary condition $u=g(t,\\vec{x})$, where $g$ is a (possibly) time and space-dependent MOOSE Function.", "href": "../../source/bcs/FunctionDirichletBC.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = temperature
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = '2to1'
function<<<{"description": "The forcing function."}>>> = temperature_inner_function
[]
[]Functions
In this example, Functions are used to define the time-dependent tritium and heat flux at the exposed surface, as well as the coolant temperature. Functions can also be spatially-dependent. The functions are then provided to BCs, as described above.
[Functions<<<{"href": "../../syntax/Functions/index.html"}>>>]
[t_in_cycle]
type = ParsedFunction<<<{"description": "Function created by parsing a string", "href": "../../source/functions/MooseParsedFunction.html"}>>>
expression<<<{"description": "The user defined function."}>>> = 't % ${plasma_cycle_time}'
[]
# pulse between 0 and 1 following the plasma operation
[pulse_time_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."}>>> = 't_in_cycle'
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."}>>> = 't_in_cycle'
expression<<<{"description": "The user defined function."}>>> = 'if(t_in_cycle < ${plasma_ramp_time}, t_in_cycle/${plasma_ramp_time},
if(t_in_cycle < ${plasma_ss_end}, 1,
if(t_in_cycle < ${plasma_ramp_down_end}, 1 - (t_in_cycle-${plasma_ss_end})/${plasma_ramp_time}, 0.0)))'
[]
[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."}>>> = '(${plasma_max_flux} - ${plasma_min_flux}) * pulse_time_function + ${plasma_min_flux}'
[]
[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."}>>> = '(${plasma_max_heat} - ${plasma_min_heat}) * pulse_time_function + ${plasma_min_heat}'
[]
[temperature_inner_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."}>>> = '(${temperature_coolant_max} - ${temperature_initial}) * pulse_time_function + ${temperature_initial}'
[]
[timestep_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."}>>> = 't_in_cycle'
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."}>>> = 't_in_cycle'
expression<<<{"description": "The user defined function."}>>> = 'if(t_in_cycle < ${fparse 0.1 * plasma_ramp_time} , 20,
if(t_in_cycle < ${fparse 0.9 * plasma_ramp_time} , 40,
if(t_in_cycle < ${fparse 1.1 * plasma_ramp_time} , 20,
if(t_in_cycle < ${fparse plasma_ss_end - 20} , 40,
if(t_in_cycle < ${plasma_ss_end} , 20,
if(t_in_cycle < ${fparse plasma_ramp_down_end - 10}, 4,
if(t_in_cycle < ${fparse plasma_ramp_down_end + 10}, 20,
if(t_in_cycle < ${fparse plasma_cycle_time - 100} , 200,
if(t_in_cycle < ${plasma_cycle_time} , 40, 2)))))))))'
[]
[temperature_steady_state]
type = ParsedFunction<<<{"description": "Function created by parsing a string", "href": "../../source/functions/MooseParsedFunction.html"}>>>
expression<<<{"description": "The user defined function."}>>> = "-1.59786e4*x^2 -1.11629611e4*x + 4.84297313e2 + 1.9491599e6*y^2 + 1.55723201e4*y - 7.312884e5*x*y"
[]
[]Material properties
We use the tritium mass transport properties listed in Table 2 to solve the mass conservation equation (Eq. (3)) for two variables: and (i.e., solute and trapped T atom concentrations) in three materials and the thermal properties (i.e., density, temperature-dependent specific heat, and thermal conductivity) listed in Table 3 to solve the energy conservation equation (Eq. (4)) for one variable: the temperature . The diffusivity is defined as and the solubility is defined as .
Table 2: Tritium mass transport and trapping properties used in the W, Cu, and CuCrZr layers. NOTE: Two-component solubility in W kept the maximum solubility ratio between W and Cu to 104 at low temperature. The references are provided in Shimada et al. (2024).
| Material | (m/s) | (eV) | (Pa) | (eV) | Detrapping energy: (eV) | Trap density: (at.fr.) |
|---|---|---|---|---|---|---|
| W | 2.410 | 0.39 | 1.8710 | 1.04 | 0.85 | 1.010 |
| W | 3.1410 | 0.57 | ||||
| Cu | 6.610 | 0.39 | 3.1410 | 0.57 | 0.50 | 5.010 |
| CuCrZr | 3.910 | 0.42 | 4.2810 | 0.39 | 0.83 | 5.010 |
Table 3: Thermal properties used in the W, Cu, and CuCrZr layers. The references are provided in Shimada et al. (2024).
| Material | Density: (g m) | Specific heat: (J kg K) | Thermal conductivity: (W m K) |
|---|---|---|---|
| W | 19,300 | 1.1610 +7.1110 T –6.5810 T +3.2410 T –5.4510 T (293 < T (K) < 2500) | 2.4110 –2.9010 T + 2.5410 T –1.0310 T +1.5210 T (293 < T (K) < 2500) |
| Cu | 8,960 | 4.2110 –6.8510 T (293 < T (K) < 873) | 3.1610 +3.1810 T –3.4910 T +1.6610 T (293 < T (K) < 873) |
| CuCrZr | 8,900 | 390 | 3.8710 –1.2810 T (293 < T (K) < 927) |
[Materials<<<{"href": "../../syntax/Materials/index.html"}>>>]
############################## Materials for W (block = 4)
[diffusivity_W]
type = ADParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
property_name<<<{"description": "Name of the parsed material property"}>>> = diffusivity_W
coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = 'temperature'
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 4
expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '${diffusivity_W_D0}*exp(-${diffusivity_W_Ea}/temperature)'
outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = all
[]
[solubility_W]
type = ADParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
property_name<<<{"description": "Name of the parsed material property"}>>> = solubility_W
coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = 'temperature'
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 4
expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '${solubility_W_1_D0}*exp(-${solubility_W_1_Ea}/temperature) + ${solubility_W_2_D0}*exp(-${solubility_W_2_Ea}/temperature)'
outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = all
[]
[converter_to_regular_W]
type = MaterialADConverter<<<{"description": "Converts regular material properties to AD properties and vice versa", "href": "../../source/materials/MaterialADConverter.html"}>>>
ad_props_in<<<{"description": "The names of the AD material properties to convert to regular properties"}>>> = 'diffusivity_W'
reg_props_out<<<{"description": "The names of the output regular properties"}>>> = 'diffusivity_W_nonAD'
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 4
[]
[heat_transfer_W]
type = GenericConstantMaterial<<<{"description": "Declares material properties based on names and values prescribed by input parameters.", "href": "../../source/materials/GenericConstantMaterial.html"}>>>
prop_names<<<{"description": "The names of the properties this material will have"}>>> = 'density_W'
prop_values<<<{"description": "The values associated with the named properties"}>>> = '${density_W}'
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 4
[]
[specific_heat_W]
type = ParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
property_name<<<{"description": "Name of the parsed material property"}>>> = specific_heat_W
coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = 'temperature'
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 4
expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '1.16e2 + 7.11e-2 * temperature - 6.58e-5 * temperature^2 + 3.24e-8 * temperature^3 -5.45e-12 * temperature^4' # [J/kg-K]
outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = all
[]
[thermal_conductivity_W]
type = ParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
property_name<<<{"description": "Name of the parsed material property"}>>> = thermal_conductivity_W
coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = 'temperature'
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 4
expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '2.41e2 - 2.90e-1 * temperature + 2.54e-4 * temperature^2 - 1.03e-7 * temperature^3 + 1.52e-11 * temperature^4' # [W/m-K]
outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = all
[]
############################## Materials for Cu (block = 3)
[diffusivity_Cu]
type = ADParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
property_name<<<{"description": "Name of the parsed material property"}>>> = diffusivity_Cu
coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = 'temperature'
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 3
expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '${diffusivity_Cu_D0}*exp(-${diffusivity_Cu_Ea}/temperature)'
outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = all
[]
[solubility_Cu]
type = ADParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
property_name<<<{"description": "Name of the parsed material property"}>>> = solubility_Cu
coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = 'temperature'
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 3
expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '${solubility_Cu_D0}*exp(-${solubility_Cu_Ea}/temperature)'
outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = all
[]
[converter_to_regular_Cu]
type = MaterialADConverter<<<{"description": "Converts regular material properties to AD properties and vice versa", "href": "../../source/materials/MaterialADConverter.html"}>>>
ad_props_in<<<{"description": "The names of the AD material properties to convert to regular properties"}>>> = 'diffusivity_Cu'
reg_props_out<<<{"description": "The names of the output regular properties"}>>> = 'diffusivity_Cu_nonAD'
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 3
[]
[heat_transfer_Cu]
type = GenericConstantMaterial<<<{"description": "Declares material properties based on names and values prescribed by input parameters.", "href": "../../source/materials/GenericConstantMaterial.html"}>>>
prop_names<<<{"description": "The names of the properties this material will have"}>>> = 'density_Cu'
prop_values<<<{"description": "The values associated with the named properties"}>>> = '${density_Cu}'
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 3
[]
[specific_heat_Cu]
type = ParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
property_name<<<{"description": "Name of the parsed material property"}>>> = specific_heat_Cu
coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = 'temperature'
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 3
expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '3.16e2 + 3.18e-1 * temperature - 3.49e-4 * temperature^2 + 1.66e-7 * temperature^3' # [J/kg-K]
outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = all
[]
[thermal_conductivity_Cu]
type = ParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
property_name<<<{"description": "Name of the parsed material property"}>>> = thermal_conductivity_Cu
coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = 'temperature'
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 3
# expression = '-3.9e-8 * temperature^3 + 3.8e-5 * temperature^2 - 7.9e-2 * temperature + 4.0e2' # ~ 401.0 [ W/m-K] from R. Delaporte-Mathurin et al 2021 Nucl. Fusion 61 036038,
expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '4.21e2 - 6.85e-2 * temperature' # [W/m-K]
outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = all
[]
############################## Materials for CuCrZr (block = 2)
[diffusivity_CuCrZr]
type = ADParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
property_name<<<{"description": "Name of the parsed material property"}>>> = diffusivity_CuCrZr
coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = 'temperature'
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 2
expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '${diffusivity_CuCrZr_D0}*exp(-${diffusivity_CuCrZr_Ea}/temperature)'
outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = all
[]
[solubility_CuCrZr]
type = ADParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
property_name<<<{"description": "Name of the parsed material property"}>>> = solubility_CuCrZr
coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = 'temperature'
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 2
expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '${solubility_CuCrZr_D0}*exp(-${solubility_CuCrZr_Ea}/temperature)'
outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = all
[]
[converter_to_regular_CuCrZr]
type = MaterialADConverter<<<{"description": "Converts regular material properties to AD properties and vice versa", "href": "../../source/materials/MaterialADConverter.html"}>>>
ad_props_in<<<{"description": "The names of the AD material properties to convert to regular properties"}>>> = 'diffusivity_CuCrZr'
reg_props_out<<<{"description": "The names of the output regular properties"}>>> = 'diffusivity_CuCrZr_nonAD'
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 2
[]
[heat_transfer_CuCrZr]
type = GenericConstantMaterial<<<{"description": "Declares material properties based on names and values prescribed by input parameters.", "href": "../../source/materials/GenericConstantMaterial.html"}>>>
prop_names<<<{"description": "The names of the properties this material will have"}>>> = 'density_CuCrZr specific_heat_CuCrZr'
prop_values<<<{"description": "The values associated with the named properties"}>>> = '${density_CuCrZr} ${specific_heat_CuCrZr}'
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 2
[]
[thermal_conductivity_CuCrZr]
type = ParsedMaterial<<<{"description": "Parsed expression Material.", "href": "../../source/materials/ParsedMaterial.html"}>>>
property_name<<<{"description": "Name of the parsed material property"}>>> = thermal_conductivity_CuCrZr
coupled_variables<<<{"description": "Vector of variables used in the parsed function"}>>> = 'temperature'
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 2
expression<<<{"description": "Parsed function (see FParser) expression for the parsed material"}>>> = '3.87e2 - 1.28e-1 * temperature' # [W/m-K]
outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = all
[]
############################## Materials for others
[interface_jump_4to3]
type = SolubilityRatioMaterial<<<{"description": "Calculates the jump in concentration across an interface.", "href": "../../source/materials/SolubilityRatioMaterial.html"}>>>
solubility_primary<<<{"description": "The material property on the primary side of the interface"}>>> = solubility_W
solubility_secondary<<<{"description": "The material property on the secondary side of the interface"}>>> = solubility_Cu
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = '4to3'
concentration_primary<<<{"description": "Primary side non-linear variable for jump computation"}>>> = C_mobile_W
concentration_secondary<<<{"description": "Secondary side non-linear variable for jump computation"}>>> = C_mobile_Cu
[]
[interface_jump_3to2]
type = SolubilityRatioMaterial<<<{"description": "Calculates the jump in concentration across an interface.", "href": "../../source/materials/SolubilityRatioMaterial.html"}>>>
solubility_primary<<<{"description": "The material property on the primary side of the interface"}>>> = solubility_Cu
solubility_secondary<<<{"description": "The material property on the secondary side of the interface"}>>> = solubility_CuCrZr
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = '3to2'
concentration_primary<<<{"description": "Primary side non-linear variable for jump computation"}>>> = C_mobile_Cu
concentration_secondary<<<{"description": "Secondary side non-linear variable for jump computation"}>>> = C_mobile_CuCrZr
[]
[]Interface Kernels
TMAP8 assumes equilibrium between the chemical potentials of the diffusing species similar to how TMAP4 and TMAP7 treated the diffusing species across two different materials with different chemical potentials. SolubilityRatioMaterial is used to treat solute concentration differences stemming from a difference in T solubilities across the interface. The solubility ratio jump is calculated via the following: (5)
ADPenaltyInterfaceDiffusion is used to conserve the particle flux at this interface between two different solubilities. The extremely low tritium solubility in W at low temperature leads to an extremely low solute concentration in W, creating a large solute concentration difference between W and Cu. Two-component solubility in W is used to keep the maximum solubility ratio between W and Cu to 104 at low temperature to avoid the convergence issue associated with calculating two significantly different solute concentration in W and Cu.
[InterfaceKernels<<<{"href": "../../syntax/InterfaceKernels/index.html"}>>>]
[tied_4to3]
type = ADPenaltyInterfaceDiffusion<<<{"description": "A penalty-based interface condition that forcesthe continuity of variables and the flux equivalence across an interface.", "href": "../../source/interfacekernels/PenaltyInterfaceDiffusion.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = C_mobile_W
neighbor_var<<<{"description": "The variable on the other side of the interface."}>>> = C_mobile_Cu
penalty<<<{"description": "The penalty that penalizes jump between primary and neighbor variables."}>>> = 0.05 # it will not converge with > 0.1, but it creates negative C_mobile _Cu with << 0.1
# jump_prop_name = solubility_ratio_4to3
jump_prop_name<<<{"description": "the name of the material property that calculates the jump."}>>> = solubility_ratio
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = '4to3'
[]
[tied_3to2]
type = ADPenaltyInterfaceDiffusion<<<{"description": "A penalty-based interface condition that forcesthe continuity of variables and the flux equivalence across an interface.", "href": "../../source/interfacekernels/PenaltyInterfaceDiffusion.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = C_mobile_Cu
neighbor_var<<<{"description": "The variable on the other side of the interface."}>>> = C_mobile_CuCrZr
penalty<<<{"description": "The penalty that penalizes jump between primary and neighbor variables."}>>> = 0.05 # it will not converge with > 0.1, but it creates negative C_mobile _Cu with << 0.1
# jump_prop_name = solubility_ratio_3to2
jump_prop_name<<<{"description": "the name of the material property that calculates the jump."}>>> = solubility_ratio
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = '3to2'
[]
[]Numerical method
We use a standard preconditioner: the “single matrix preconditioner”. The Newton method is used to model the transient tritium and thermal transport in a 2D monoblock. It is important to note that MOOSE is equipped with the built-in Message Passing Interface (MPI) protocol, as tritium and thermal transport analysis of fifty 1,600-second cycle plasma discharges in the 2D monoblock is performed in under 2 hours using a single device/computer (3.5 GHz Apple M2 Pro, 10-Core CPU/16-Core GPU) with this MPI feature.
[Executioner<<<{"href": "../../syntax/Executioner/index.html"}>>>]
type = Transient
scheme = bdf2
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type'
petsc_options_value = 'lu NONZERO'
nl_rel_tol = 1e-6 # 1e-8 works for 1 cycle
nl_abs_tol = 1e-7 # 1e-11 works for 1 cycle
end_time = '${fparse 50 * plasma_cycle_time}' # 50 ITER shots
automatic_scaling = true
line_search = 'none'
dtmin = 1e-4
nl_max_its = 18
[TimeStepper<<<{"href": "../../syntax/Executioner/TimeStepper/index.html"}>>>]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 15
iteration_window = 1
growth_factor = 1.2
cutback_factor = 0.8
timestep_limiting_postprocessor = timestep_max_pp
[]
[]Results
The simulation results from this example are shown in Figure 3 and Figure 4. For more results, information, and discussion about the results for this example case and their significance, the reader is referred to Shimada et al. (2024).
.](../figures/divertor_monoblock_results_2D_a.png)
Figure 3: Tritium concentration profile in W (left), Cu (center), and CuCrZr (right) after ten 1,600-second cycles ( s). This corresponds to Fig. 4A in Shimada et al. (2024).
.](../figures/divertor_monoblock_results_2D_b.png)
Figure 4: Tritium concentration profile in W (left), Cu (center), and CuCrZr (right) after fifty 1,600-second cycles ( s). This corresponds to Fig. 4B in Shimada et al. (2024).
gold is a smaller version of the outputThe input file (test/tests/divertor_monoblock/divertor_monoblock.i) returns the outputs that were used in Shimada et al. (2024). However, a slightly modified version of this input is run in (test/tests/divertor_monoblock/tests) as part of TMAP8's Software Quality Assurance process: It simulates only one pulse cycle, has a coarser mesh, and outputs the results less regularly to limit the file size. As a result, the exodus file in the test gold directory is a smaller version of the output generated when running the full input file.
Note that the current model has been utilized in a follow up study to perform a sensitivity study on material properties and operation conditions, for which the documentation is available here.
Postprocessors
Relevant postprocessors have been added to characterize temperatures, fluxes and concentrations of tritium at various points in the model.
First, we add a postprocessor to track the flux across the CuCrZr boundary, and scale it to obtain a total flux
[Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[Tritium_SideFluxIntegral]
type = SideDiffusiveFluxIntegral<<<{"description": "Computes the integral of the diffusive flux over the specified boundary", "href": "../../source/postprocessors/SideDiffusiveFluxIntegral.html"}>>>
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = '2to1'
diffusivity<<<{"description": "The name of the diffusivity material property that will be used in the flux computation. This must be provided if the variable is of finite element type"}>>> = diffusivity_CuCrZr_nonAD
variable<<<{"description": "The name of the variable which this postprocessor integrates"}>>> = Sc_C_total_CuCrZr
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."}>>> = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[][Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[Scaled_Tritium_Flux]
type = ParsedPostprocessor<<<{"description": "Computes a parsed expression with post-processors", "href": "../../source/postprocessors/ParsedPostprocessor.html"}>>>
expression<<<{"description": "function expression"}>>> = '5.01e-24 * Tritium_SideFluxIntegral'
pp_names<<<{"description": "Post-processors arguments"}>>> = Tritium_SideFluxIntegral
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."}>>> = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[]We also track the heat flux and maximum temperature in each material
[Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[coolant_heat_flux]
# units of W/m2
type = SideDiffusiveFluxAverage<<<{"description": "Computes the average of the diffusive flux over the specified boundary", "href": "../../source/postprocessors/SideDiffusiveFluxAverage.html"}>>>
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = '2to1'
diffusivity<<<{"description": "The name of the diffusivity material property that will be used in the flux computation. This must be provided if the variable is of finite element type"}>>> = thermal_conductivity_CuCrZr
variable<<<{"description": "The name of the variable which this postprocessor integrates"}>>> = temperature
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."}>>> = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[][Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[max_temperature_W]
type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../source/postprocessors/ElementExtremeValue.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 4
variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = 'temperature'
value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
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."}>>> = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[][Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[max_temperature_Cu]
type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../source/postprocessors/ElementExtremeValue.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 3
variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = 'temperature'
value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
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."}>>> = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[][Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[max_temperature_CuCrZr]
type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../source/postprocessors/ElementExtremeValue.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 2
variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = 'temperature'
value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
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."}>>> = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[]Additionally the average temperature in each material
[Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[avg_temperature_W]
type = ElementAverageValue<<<{"description": "Computes the volumetric average of a variable", "href": "../../source/postprocessors/ElementAverageValue.html"}>>>
variable<<<{"description": "The name of the variable that this object operates on"}>>> = temperature
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 4
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."}>>> = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[][Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[avg_temperature_Cu]
type = ElementAverageValue<<<{"description": "Computes the volumetric average of a variable", "href": "../../source/postprocessors/ElementAverageValue.html"}>>>
variable<<<{"description": "The name of the variable that this object operates on"}>>> = temperature
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 3
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."}>>> = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[][Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[avg_temperature_CuCrZr]
type = ElementAverageValue<<<{"description": "Computes the volumetric average of a variable", "href": "../../source/postprocessors/ElementAverageValue.html"}>>>
variable<<<{"description": "The name of the variable that this object operates on"}>>> = temperature
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 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."}>>> = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[]We also look at the maximum concentration of tritium in each material
[Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[max_concentration_W]
type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../source/postprocessors/ElementExtremeValue.html"}>>>
variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = 'C_total_W'
value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 4
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."}>>> = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[][Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[max_concentration_Cu]
type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../source/postprocessors/ElementExtremeValue.html"}>>>
variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = 'C_total_Cu'
value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 3
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."}>>> = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[][Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[max_concentration_CuCrZr]
type = ElementExtremeValue<<<{"description": "Finds either the min or max elemental value of a variable over the domain.", "href": "../../source/postprocessors/ElementExtremeValue.html"}>>>
variable<<<{"description": "The name of the variable that this postprocessor operates on"}>>> = 'C_total_CuCrZr'
value_type<<<{"description": "Type of extreme value to return. 'max' returns the maximum value. 'min' returns the minimum value. 'max_abs' returns the maximum of the absolute value."}>>> = max
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 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."}>>> = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[]And the total area (2D volume) each material occupies
[Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[area_W]
type = VolumePostprocessor<<<{"description": "Computes the volume of a specified block", "href": "../../source/postprocessors/VolumePostprocessor.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 4
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."}>>> = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[][Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[area_Cu]
type = VolumePostprocessor<<<{"description": "Computes the volume of a specified block", "href": "../../source/postprocessors/VolumePostprocessor.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 3
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."}>>> = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[][Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[area_CuCrZr]
type = VolumePostprocessor<<<{"description": "Computes the volume of a specified block", "href": "../../source/postprocessors/VolumePostprocessor.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 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."}>>> = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[][Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[total_retention]
type = SumPostprocessor<<<{"description": "Sums the values of several postprocessors", "href": "../../source/postprocessors/SumPostprocessor.html"}>>>
values<<<{"description": "List of postprocessors to add"}>>> = 'ScInt_C_total_W ScInt_C_total_Cu ScInt_C_total_CuCrZr'
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."}>>> = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[]Complete input file
This case is reproduced three times:
Once with the usual TMAP8 syntax for input files, which is done in (test/tests/divertor_monoblock/divertor_monoblock.i),
Another time using the Physics Syntax to reproduce the same exact case, but with a simpler input file, which is shown in (test/tests/divertor_monoblock/divertor_monoblock_physics.i), and
Last with a simpler model utilizing only two variables (mobile and trapped) for tritium concentration across the different materials instead of having different variables in each block. The input file also uses the Physics Syntax and is shown in (test/tests/divertor_monoblock/divertor_monoblock_physics-single-variable.i).
Note that since these input files have a lot of sections in common, we utilize the !include feature available in MOOSE/TMAP8 to template common parts of the input files. In this case:
(test/tests/divertor_monoblock/divertor_monoblock_common_base.i) contains all the parts of the input files common to all three cases.
(test/tests/divertor_monoblock/divertor_monoblock_mesh_base.i) contains parts related to the geometry and mesh for all three cases.
(test/tests/divertor_monoblock/divertor_monoblock_multi_variable_base.i) contains the parts shared by both the (test/tests/divertor_monoblock/divertor_monoblock.i) and (test/tests/divertor_monoblock/divertor_monoblock_physics.i) cases.
(test/tests/divertor_monoblock/divertor_monoblock_physics-single-variable.i) contains the parts equivalent to the ones in (test/tests/divertor_monoblock/divertor_monoblock_multi_variable_base.i), but for the case in (test/tests/divertor_monoblock/divertor_monoblock_physics-single-variable.i).
Below are the input files which (test/tests/divertor_monoblock/divertor_monoblock.i) uses to model the scenario described above. This case can be run reliably with approximately 4 processor cores. Note that this input file has been optimized for showcasing capability rather than computational cost.
### This is the driver input file for the divertor monoblock case published in:
### 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
!include divertor_monoblock_explicit_base.i
!include divertor_monoblock_output_base.i
Variables/temperature/initial_condition = ${temperature_initial}
(test/tests/divertor_monoblock/divertor_monoblock.i)### This input file contains everything necessary for the divertor monoblock
### case that is not used in the physics-based inputs
### 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
###
### Sc_ Scaled
### Int_ Integrated
### ScInt_ Scaled and integrated
C_mobile_CuCrZr_DirichletBC_Coolant = 1.0e-18 # at.fraction
C_mobile_W_init = 1.0e-20 # at.fraction
C_mobile_Cu_init = 5.0e-17 # at.fraction
C_mobile_CuCrZr_init = 1.0e-15 # at.fraction
!include divertor_monoblock_mesh_base.i
!include divertor_monoblock_common_base.i
!include divertor_monoblock_multi_variable_base.i
[Functions]
[temperature_steady_state]
type = ParsedFunction
expression = "-1.59786e4*x^2 -1.11629611e4*x + 4.84297313e2 + 1.9491599e6*y^2 + 1.55723201e4*y "
"- 7.312884e5*x*y"
[]
[]
[Postprocessors]
[Tritium_SideFluxIntegral]
type = SideDiffusiveFluxIntegral
boundary = '2to1'
diffusivity = diffusivity_CuCrZr_nonAD
variable = Sc_C_total_CuCrZr
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[Scaled_Tritium_Flux]
type = ParsedPostprocessor
expression = '5.01e-24 * Tritium_SideFluxIntegral'
pp_names = Tritium_SideFluxIntegral
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[coolant_heat_flux]
# units of W/m2
type = SideDiffusiveFluxAverage
boundary = '2to1'
diffusivity = thermal_conductivity_CuCrZr
variable = temperature
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[max_temperature_W]
type = ElementExtremeValue
block = 4
variable = 'temperature'
value_type = max
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[max_temperature_Cu]
type = ElementExtremeValue
block = 3
variable = 'temperature'
value_type = max
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[max_temperature_CuCrZr]
type = ElementExtremeValue
block = 2
variable = 'temperature'
value_type = max
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[avg_temperature_W]
type = ElementAverageValue
variable = temperature
block = 4
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[avg_temperature_Cu]
type = ElementAverageValue
variable = temperature
block = 3
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[avg_temperature_CuCrZr]
type = ElementAverageValue
variable = temperature
block = 2
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[max_concentration_W]
type = ElementExtremeValue
variable = 'C_total_W'
value_type = max
block = 4
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[max_concentration_Cu]
type = ElementExtremeValue
variable = 'C_total_Cu'
value_type = max
block = 3
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[max_concentration_CuCrZr]
type = ElementExtremeValue
variable = 'C_total_CuCrZr'
value_type = max
block = 2
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[area_W]
type = VolumePostprocessor
block = 4
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[area_Cu]
type = VolumePostprocessor
block = 3
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[area_CuCrZr]
type = VolumePostprocessor
block = 2
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
[total_retention]
type = SumPostprocessor
values = 'ScInt_C_total_W ScInt_C_total_Cu ScInt_C_total_CuCrZr'
execute_on = 'MULTIAPP_FIXED_POINT_END FINAL'
[]
# TMAP8 will give an error if the parser does not find a use for defined parameters
# It also seems that the parser does not deal well with multiple layers of includes,
# so the definitions of the mesh parameters need to have a use somewhere in this input file
# This is a dummy postprocessor that is used to satisfy the parser for known terms.
[unused_parameters]
type = ParsedPostprocessor
expression = '${num_sectors} + ${rings_H2O} + ${rings_CuCrZr} + ${rings_Cu} + ${rings_W}'
enable = False
outputs = ''
[]
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
[]
######################### Variables for W (block = 4)
[C_mobile_W]
order = FIRST
family = LAGRANGE
initial_condition = ${C_mobile_W_init}
block = 4
[]
[C_trapped_W]
order = FIRST
family = LAGRANGE
initial_condition = ${C_trapping_init}
block = 4
[]
######################### Variables for Cu (block = 3)
[C_mobile_Cu]
order = FIRST
family = LAGRANGE
initial_condition = ${C_mobile_Cu_init}
block = 3
[]
[C_trapped_Cu]
order = FIRST
family = LAGRANGE
initial_condition = ${C_trapping_init}
block = 3
[]
######################### Variables for CuCrZr (block = 2)
[C_mobile_CuCrZr]
order = FIRST
family = LAGRANGE
initial_condition = ${C_mobile_CuCrZr_init}
block = 2
[]
[C_trapped_CuCrZr]
order = FIRST
family = LAGRANGE
initial_condition = ${C_trapping_init}
block = 2
[]
[]
[Kernels]
############################## Kernels for W (block = 4)
[diff_W]
type = ADMatDiffusion
variable = C_mobile_W
diffusivity = diffusivity_W
block = 4
extra_vector_tags = ref
[]
[time_diff_W]
type = ADTimeDerivative
variable = C_mobile_W
block = 4
extra_vector_tags = ref
[]
[coupled_time_W]
type = ScaledCoupledTimeDerivative
variable = C_mobile_W
v = C_trapped_W
block = 4
extra_vector_tags = ref
[]
[heat_conduction_W]
type = HeatConduction
variable = temperature
thermal_conductivity = thermal_conductivity_W
block = 4
extra_vector_tags = ref
[]
[time_heat_conduction_W]
type = SpecificHeatConductionTimeDerivative
variable = temperature
specific_heat = specific_heat_W
density = density_W
block = 4
extra_vector_tags = ref
[]
############################## Kernels for Cu (block = 3)
[diff_Cu]
type = ADMatDiffusion
variable = C_mobile_Cu
diffusivity = diffusivity_Cu
block = 3
extra_vector_tags = ref
[]
[time_diff_Cu]
type = ADTimeDerivative
variable = C_mobile_Cu
block = 3
extra_vector_tags = ref
[]
[coupled_time_Cu]
type = ScaledCoupledTimeDerivative
variable = C_mobile_Cu
v = C_trapped_Cu
block = 3
extra_vector_tags = ref
[]
[heat_conduction_Cu]
type = HeatConduction
variable = temperature
thermal_conductivity = thermal_conductivity_Cu
block = 3
extra_vector_tags = ref
[]
[time_heat_conduction_Cu]
type = SpecificHeatConductionTimeDerivative
variable = temperature
specific_heat = specific_heat_Cu
density = density_Cu
block = 3
extra_vector_tags = ref
[]
############################## Kernels for CuCrZr (block = 2)
[diff_CuCrZr]
type = ADMatDiffusion
variable = C_mobile_CuCrZr
diffusivity = diffusivity_CuCrZr
block = 2
extra_vector_tags = ref
[]
[time_diff_CuCrZr]
type = ADTimeDerivative
variable = C_mobile_CuCrZr
block = 2
extra_vector_tags = ref
[]
[coupled_time_CuCrZr]
type = ScaledCoupledTimeDerivative
variable = C_mobile_CuCrZr
v = C_trapped_CuCrZr
block = 2
extra_vector_tags = ref
[]
[heat_conduction_CuCrZr]
type = HeatConduction
variable = temperature
thermal_conductivity = thermal_conductivity_CuCrZr
block = 2
extra_vector_tags = ref
[]
[time_heat_conduction_CuCrZr]
type = SpecificHeatConductionTimeDerivative
variable = temperature
specific_heat = specific_heat_CuCrZr
density = density_CuCrZr
block = 2
extra_vector_tags = ref
[]
[]
[InterfaceKernels]
[tied_4to3]
type = ADPenaltyInterfaceDiffusion
variable = C_mobile_W
neighbor_var = C_mobile_Cu
penalty = 0.05 # it will not converge with > 0.1, but it creates negative C_mobile _Cu with << 0.1
# jump_prop_name = solubility_ratio_4to3
jump_prop_name = solubility_ratio
boundary = '4to3'
[]
[tied_3to2]
type = ADPenaltyInterfaceDiffusion
variable = C_mobile_Cu
neighbor_var = C_mobile_CuCrZr
penalty = 0.05 # it will not converge with > 0.1, but it creates negative C_mobile _Cu with << 0.1
# jump_prop_name = solubility_ratio_3to2
jump_prop_name = solubility_ratio
boundary = '3to2'
[]
[]
[NodalKernels]
############################## NodalKernels for W (block = 4)
[time_W]
type = TimeDerivativeNodalKernel
variable = C_trapped_W
[]
[trapping_W]
type = TrappingNodalKernel
variable = C_trapped_W
temperature = temperature
alpha_t = ${alpha_t}
N = ${N_W}
Ct0 = ${Ct0_W}
trapping_energy = ${trapping_energy}
trap_per_free = ${trap_per_free_W}
mobile_concentration = 'C_mobile_W'
extra_vector_tags = ref
[]
[release_W]
type = ReleasingNodalKernel
alpha_r = ${alpha_r}
temperature = temperature
detrapping_energy = ${detrapping_energy_W}
variable = C_trapped_W
[]
############################## NodalKernels for Cu (block = 3)
[time_Cu]
type = TimeDerivativeNodalKernel
variable = C_trapped_Cu
[]
[trapping_Cu]
type = TrappingNodalKernel
variable = C_trapped_Cu
temperature = temperature
alpha_t = ${alpha_t}
N = ${N_Cu}
Ct0 = ${Ct0_Cu}
trapping_energy = ${trapping_energy}
trap_per_free = ${trap_per_free_Cu}
mobile_concentration = 'C_mobile_Cu'
extra_vector_tags = ref
[]
[release_Cu]
type = ReleasingNodalKernel
alpha_r = ${alpha_r}
temperature = temperature
detrapping_energy = ${detrapping_energy_Cu}
variable = C_trapped_Cu
[]
############################## NodalKernels for CuCrZr (block = 2)
[time_CuCrZr]
type = TimeDerivativeNodalKernel
variable = C_trapped_CuCrZr
[]
[trapping_CuCrZr]
type = TrappingNodalKernel
variable = C_trapped_CuCrZr
temperature = temperature
alpha_t = ${alpha_t}
N = ${N_CuCrZr}
Ct0 = ${Ct0_CuCrZr}
trapping_energy = ${trapping_energy}
trap_per_free = ${trap_per_free_CuCrZr}
mobile_concentration = 'C_mobile_CuCrZr'
extra_vector_tags = ref
[]
[release_CuCrZr]
type = ReleasingNodalKernel
alpha_r = ${alpha_r}
temperature = temperature
detrapping_energy = ${detrapping_energy_CuCrZr}
variable = C_trapped_CuCrZr
[]
[]
[BCs]
[C_mob_W_top_flux]
type = FunctionNeumannBC
variable = C_mobile_W
boundary = 'top'
function = mobile_flux_bc_function
[]
[mobile_tube]
type = DirichletBC
variable = C_mobile_CuCrZr
value = ${C_mobile_CuCrZr_DirichletBC_Coolant}
boundary = '2to1'
[]
[temperature_top]
type = FunctionNeumannBC
variable = temperature
boundary = 'top'
function = temperature_flux_bc_function
[]
[temperature_tube]
type = FunctionDirichletBC
variable = temperature
boundary = '2to1'
function = temperature_inner_function
[]
[]
[Materials]
############################## Materials for W (block = 4)
[diffusivity_W]
type = ADParsedMaterial
property_name = diffusivity_W
coupled_variables = 'temperature'
block = 4
expression = '${diffusivity_W_D0}*exp(-${diffusivity_W_Ea}/temperature)'
outputs = all
[]
[solubility_W]
type = ADParsedMaterial
property_name = solubility_W
coupled_variables = 'temperature'
block = 4
expression = '${solubility_W_1_D0}*exp(-${solubility_W_1_Ea}/temperature) + ${solubility_W_2_D0}*exp(-${solubility_W_2_Ea}/temperature)'
outputs = all
[]
[converter_to_regular_W]
type = MaterialADConverter
ad_props_in = 'diffusivity_W'
reg_props_out = 'diffusivity_W_nonAD'
block = 4
[]
[heat_transfer_W]
type = GenericConstantMaterial
prop_names = 'density_W'
prop_values = '${density_W}'
block = 4
[]
[specific_heat_W]
type = ParsedMaterial
property_name = specific_heat_W
coupled_variables = 'temperature'
block = 4
expression = '1.16e2 + 7.11e-2 * temperature - 6.58e-5 * temperature^2 + 3.24e-8 * temperature^3 -5.45e-12 * temperature^4' # [J/kg-K]
outputs = all
[]
[thermal_conductivity_W]
type = ParsedMaterial
property_name = thermal_conductivity_W
coupled_variables = 'temperature'
block = 4
expression = '2.41e2 - 2.90e-1 * temperature + 2.54e-4 * temperature^2 - 1.03e-7 * temperature^3 + 1.52e-11 * temperature^4' # [W/m-K]
outputs = all
[]
############################## Materials for Cu (block = 3)
[diffusivity_Cu]
type = ADParsedMaterial
property_name = diffusivity_Cu
coupled_variables = 'temperature'
block = 3
expression = '${diffusivity_Cu_D0}*exp(-${diffusivity_Cu_Ea}/temperature)'
outputs = all
[]
[solubility_Cu]
type = ADParsedMaterial
property_name = solubility_Cu
coupled_variables = 'temperature'
block = 3
expression = '${solubility_Cu_D0}*exp(-${solubility_Cu_Ea}/temperature)'
outputs = all
[]
[converter_to_regular_Cu]
type = MaterialADConverter
ad_props_in = 'diffusivity_Cu'
reg_props_out = 'diffusivity_Cu_nonAD'
block = 3
[]
[heat_transfer_Cu]
type = GenericConstantMaterial
prop_names = 'density_Cu'
prop_values = '${density_Cu}'
block = 3
[]
[specific_heat_Cu]
type = ParsedMaterial
property_name = specific_heat_Cu
coupled_variables = 'temperature'
block = 3
expression = '3.16e2 + 3.18e-1 * temperature - 3.49e-4 * temperature^2 + 1.66e-7 * temperature^3' # [J/kg-K]
outputs = all
[]
[thermal_conductivity_Cu]
type = ParsedMaterial
property_name = thermal_conductivity_Cu
coupled_variables = 'temperature'
block = 3
# expression = '-3.9e-8 * temperature^3 + 3.8e-5 * temperature^2 - 7.9e-2 * temperature + 4.0e2' # ~ 401.0 [ W/m-K] from R. Delaporte-Mathurin et al 2021 Nucl. Fusion 61 036038,
expression = '4.21e2 - 6.85e-2 * temperature' # [W/m-K]
outputs = all
[]
############################## Materials for CuCrZr (block = 2)
[diffusivity_CuCrZr]
type = ADParsedMaterial
property_name = diffusivity_CuCrZr
coupled_variables = 'temperature'
block = 2
expression = '${diffusivity_CuCrZr_D0}*exp(-${diffusivity_CuCrZr_Ea}/temperature)'
outputs = all
[]
[solubility_CuCrZr]
type = ADParsedMaterial
property_name = solubility_CuCrZr
coupled_variables = 'temperature'
block = 2
expression = '${solubility_CuCrZr_D0}*exp(-${solubility_CuCrZr_Ea}/temperature)'
outputs = all
[]
[converter_to_regular_CuCrZr]
type = MaterialADConverter
ad_props_in = 'diffusivity_CuCrZr'
reg_props_out = 'diffusivity_CuCrZr_nonAD'
block = 2
[]
[heat_transfer_CuCrZr]
type = GenericConstantMaterial
prop_names = 'density_CuCrZr specific_heat_CuCrZr'
prop_values = '${density_CuCrZr} ${specific_heat_CuCrZr}'
block = 2
[]
[thermal_conductivity_CuCrZr]
type = ParsedMaterial
property_name = thermal_conductivity_CuCrZr
coupled_variables = 'temperature'
block = 2
expression = '3.87e2 - 1.28e-1 * temperature' # [W/m-K]
outputs = all
[]
############################## Materials for others
[interface_jump_4to3]
type = SolubilityRatioMaterial
solubility_primary = solubility_W
solubility_secondary = solubility_Cu
boundary = '4to3'
concentration_primary = C_mobile_W
concentration_secondary = C_mobile_Cu
[]
[interface_jump_3to2]
type = SolubilityRatioMaterial
solubility_primary = solubility_Cu
solubility_secondary = solubility_CuCrZr
boundary = '3to2'
concentration_primary = C_mobile_Cu
concentration_secondary = C_mobile_CuCrZr
[]
[]
(test/tests/divertor_monoblock/divertor_monoblock_explicit_base.i)# This input file contains the geometry and mesh for the divertor monoblock case.
# It creates the geometry and mesh based on input parameters and generates the relevant interfaces between materials.
# It cannot be run on its own and is included in the main input files for all divertor monoblock cases.
# Some input files dependent on this that can be run are:
# - divertor_monoblock.i
# - divertor_monoblock_physics.i
# - divertor_monoblock_physics-single-variable.i
# - steady_state_runner.i
# - shutdown_transient_runner.i
# - elm_transient_runner.i
[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
[ccmg]
type = ConcentricCircleMeshGenerator<<<{"description": "This ConcentricCircleMeshGenerator source code is to generate concentric circle meshes.", "href": "../../source/meshgenerators/ConcentricCircleMeshGenerator.html"}>>>
num_sectors<<<{"description": "num_sectors % 2 = 0, num_sectors > 0Number of azimuthal sectors in each quadrant'num_sectors' must be an even number."}>>> = ${num_sectors}
rings<<<{"description": "Number of rings in each circle or in the enclosing square"}>>> = '${rings_H2O} ${rings_CuCrZr} ${rings_Cu} ${rings_W}'
radii<<<{"description": "Radii of major concentric circles"}>>> = '${radius_coolant} ${radius_CuCrZr} ${radius_Cu}'
has_outer_square<<<{"description": "It determines if meshes for a outer square are added to concentric circle meshes."}>>> = on
pitch<<<{"description": "The enclosing square can be added to the completed concentric circle mesh.Elements are quad meshes."}>>> = '${fparse block_size}'
portion<<<{"description": "Control of which part of mesh is created"}>>> = left_half
preserve_volumes<<<{"description": "Volume of concentric circles can be preserved using this function."}>>> = false
smoothing_max_it<<<{"description": "Number of Laplacian smoothing iterations"}>>> = 3
[]
[ssbsg1]
type = SideSetsBetweenSubdomainsGenerator<<<{"description": "MeshGenerator that creates a sideset composed of the nodes located between two or more subdomains.", "href": "../../source/meshgenerators/SideSetsBetweenSubdomainsGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = ccmg
primary_block<<<{"description": "The primary set of blocks for which to draw a sideset between"}>>> = '4' # W
paired_block<<<{"description": "The paired set of blocks for which to draw a sideset between"}>>> = '3' # Cu
new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = '4to3'
[]
[ssbsg2]
type = SideSetsBetweenSubdomainsGenerator<<<{"description": "MeshGenerator that creates a sideset composed of the nodes located between two or more subdomains.", "href": "../../source/meshgenerators/SideSetsBetweenSubdomainsGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = ssbsg1
primary_block<<<{"description": "The primary set of blocks for which to draw a sideset between"}>>> = '3' # Cu
paired_block<<<{"description": "The paired set of blocks for which to draw a sideset between"}>>> = '4' # W
new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = '3to4'
[]
[ssbsg3]
type = SideSetsBetweenSubdomainsGenerator<<<{"description": "MeshGenerator that creates a sideset composed of the nodes located between two or more subdomains.", "href": "../../source/meshgenerators/SideSetsBetweenSubdomainsGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = ssbsg2
primary_block<<<{"description": "The primary set of blocks for which to draw a sideset between"}>>> = '3' # Cu
paired_block<<<{"description": "The paired set of blocks for which to draw a sideset between"}>>> = '2' # CuCrZr
new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = '3to2'
[]
[ssbsg4]
type = SideSetsBetweenSubdomainsGenerator<<<{"description": "MeshGenerator that creates a sideset composed of the nodes located between two or more subdomains.", "href": "../../source/meshgenerators/SideSetsBetweenSubdomainsGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = ssbsg3
primary_block<<<{"description": "The primary set of blocks for which to draw a sideset between"}>>> = '2' # CuCrZr
paired_block<<<{"description": "The paired set of blocks for which to draw a sideset between"}>>> = '3' # Cu
new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = '2to3'
[]
[ssbsg5]
type = SideSetsBetweenSubdomainsGenerator<<<{"description": "MeshGenerator that creates a sideset composed of the nodes located between two or more subdomains.", "href": "../../source/meshgenerators/SideSetsBetweenSubdomainsGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = ssbsg4
primary_block<<<{"description": "The primary set of blocks for which to draw a sideset between"}>>> = '2' # CuCrZr
paired_block<<<{"description": "The paired set of blocks for which to draw a sideset between"}>>> = '1' # H2O
new_boundary<<<{"description": "The list of boundary names to create on the supplied subdomain"}>>> = '2to1'
[]
[bdg]
type = BlockDeletionGenerator<<<{"description": "Mesh generator which removes elements from the specified subdomains", "href": "../../source/meshgenerators/BlockDeletionGenerator.html"}>>>
input<<<{"description": "The mesh we want to modify"}>>> = ssbsg5
block<<<{"description": "The list of blocks to be processed (deleted or kept)"}>>> = '1' # H2O
[]
[](test/tests/divertor_monoblock/divertor_monoblock_mesh_base.i)# This input file contains key pieces for the divertor monoblock case.
# It cannot be run on its own and is included in the main input files for all divertor monoblock
# cases. Some input files dependent on this that can be run are:
# - divertor_monoblock.i
# - divertor_monoblock_physics.i
# - divertor_monoblock_physics-single-variable.i
# - steady_state_runner.i
# - shutdown_transient_runner.i
# - elm_transient_runner.i
# Geometry and design
radius_coolant = 0.006 # depends on MOOSE PR 32524 '${units 6.0 mm -> m}'
radius_CuCrZr = 0.0075 #'${units 7.5 mm -> m}'
radius_Cu = 0.0085 # '${units 8.5 mm -> m}'
block_size = 0.028 # depends on MOOSE PR 32524 '${units 28.0 mm -> m}'
num_sectors = 36 # (-) defines mesh size
rings_H2O = 1 # (-)
rings_CuCrZr = 30 # (-)
rings_Cu = 20 # (-)
rings_W = 110 # (-)
# Operation conditions
plasma_ramp_time = '${units 100.0 s}'
plasma_ss_duration = '${units 400.0 s}'
plasma_cycle_time = '${units 1600.0 s}'
plasma_ss_end = '${fparse plasma_ramp_time + plasma_ss_duration}'
plasma_ramp_down_end = '${fparse plasma_ramp_time + plasma_ss_duration + plasma_ramp_time}'
temperature_initial = '${units 300.0 K}'
temperature_coolant_max = '${units 552.0 K}'
plasma_max_heat = '${units 1.0e7 W/m^2}' # Heat flux of 10 MW/m^2 at steady state
plasma_min_heat = '${units 0.0 W/m^2}' # no flux while the pulse is off.
# Maximum mobile flux of 7.90e-13 at the top surface (1.0e-4 [m])
# 10e24 at/m^3/s plasma flux at steady state
# 50% of it corresponds to tritium in a DT plasma
# Assuming 0.1% of incident plasma is retained in the divertor, this results in a flux of
# 5e20 at/m^3/s for tritium
# This is then normalized by the tungsten_atomic_density and leads to a flux of ~7.90e-9 m/s
# This is then distributed in the first mesh layer, which has a thickness of 1e-4 m
plasma_max_flux = '${units 7.90e-13 1/s}' # at.fraction / s
plasma_min_flux = '${units 0.0 1/s}'
# Initial conditions
C_trapping_init = 1.0e-15 # at.fraction
# Materials properties - W
tungsten_atomic_density = '${units 6.338e28 atoms/m^3}'
density_W = '${units 19300 kg/m^3}'
N_W = '${fparse tungsten_atomic_density / tungsten_atomic_density}' # usually in atoms/m^3, but here normalized by tungsten_atomic_density
Ct0_W = 1.0e-4 # at.fraction - E.A. Hodille et al 2021 Nucl. Fusion 61 1260033, trap 2 (same as trap 1)
trap_per_free_W = 1.0e0 # (-)
alpha_t = '${units 2.75e11 s}' # same for all materials
trapping_energy = '${units 0 K}' # same for all materials
alpha_r = '${units 8.4e12 s}' # same for all materials
detrapping_energy_W = '${units 11604.6 K}' # = 1.00 eV E.A. Hodille et al 2021 Nucl. Fusion 61 126003, trap 2
# detrapping_energy_W = ${units 9863.9 K} # = 0.85 eV E.A. Hodille et al 2021 Nucl. Fusion 61 126003, trap 1
# H diffusivity in W
diffusivity_W_D0 = '${units 2.4e-7 m^2/s}'
diffusivity_W_Ea = '${units 4525.8 K}'
# H solubility in W
solubility_W_1_D0 = '${units 2.95e-5 1/Pa^0.5}' # (1.87e24)/(tungsten_atomic_density) 1/m^3/Pa^(1/2) / (1/m^3) = 1/Pa^(1/2)
solubility_W_1_Ea = '${units 12069.0 K}'
solubility_W_2_D0 = '${units 4.95e-8 1/Pa^0.5}' # (3.14e20)/(tungsten_atomic_density) 1/m^3/Pa^(1/2) / (1/m^3) = 1/Pa^(1/2)
solubility_W_2_Ea = '${units 6614.6 K}'
# Materials properties - Cu
density_Cu = '${units 8960.0 kg/m^3}'
N_Cu = 1.0e0 # usually in atoms/m^3, but here normalized by material's atomic density
Ct0_Cu = 5.0e-5 # at.fraction - R. Delaporte-Mathurin et al 2021 Nucl. Fusion 61 036038, trap 3
trap_per_free_Cu = 1.0e0 # (-)
detrapping_energy_Cu = '${units 5802.3 K}' # = 0.50eV R. Delaporte-Mathurin et al 2021 Nucl. Fusion 61 036038, trap 3
# H diffusivity in Cu
diffusivity_Cu_D0 = '${units 6.60e-7 m^2/s}'
diffusivity_Cu_Ea = '${units 4525.8 K}'
# H solubility in Cu
solubility_Cu_D0 = '${units 4.95e-5 1/Pa^0.5}' # ${fparse 3.14e24 / tungsten_atomic_density} 1/m^3/Pa^(1/2) / (1/m^3) = 1/Pa^(1/2)
solubility_Cu_Ea = '${units 6614.6 K}'
# Materials properties - CuCrZr
density_CuCrZr = '${units 8900.0 kg/m^3}'
specific_heat_CuCrZr = '${units 390.0 J/kg/K}'
N_CuCrZr = 1.0e0 # usually in atoms/m^3, but here normalized by material's atomic density
Ct0_CuCrZr = 5.0e-5 # at.fraction - R. Delaporte-Mathurin et al 2021 Nucl. Fusion 61 036038, trap 4
# Ct0_CuCrZr = 4.0e-2 # at.fraction - R. Delaporte-Mathurin et al 2021 Nucl. Fusion 61 036038, trap 5
trap_per_free_CuCrZr = 1.0e0 # (-)
detrapping_energy_CuCrZr = '${units 5802.3 K}' # = 0.50eV R. Delaporte-Mathurin et al 2021 Nucl. Fusion 61 036038, trap 4
# detrapping_energy_CuCrZr = ${units 9631.8 K} # = 0.83 eV R. Delaporte-Mathurin et al 2021 Nucl. Fusion 61 036038, trap 5
# H diffusivity in CuCrZr
diffusivity_CuCrZr_D0 = '${units 3.90e-7 m^2/s}'
diffusivity_CuCrZr_Ea = '${units 4873.9 K}'
# H solubility in CuCrZr
solubility_CuCrZr_D0 = '${units 6.75e-6 1/Pa^0.5}' # ${fparse 4.28e23 / tungsten_atomic_density} 1/m^3/Pa^(1/2) / (1/m^3) = 1/Pa^(1/2)
solubility_CuCrZr_Ea = '${units 4525.8 K}'
# For postprocessor scaling
diffusivity_fixed = '${units 5.01e-24 g/m^2}' # (3.01604928)/(6.02e23)/[gram(T)/m^2]
# diffusivity_fixed = ${units 5.508e-19 g/m^2} # (1.0e3)*(1.0e3)/(6.02e23)/(3.01604928) [gram(T)/m^2] alternative
scaling_factor = '${units 3.491e10 g/m^2}' # (1.0e3)*(1.0e3)*(${tungsten_atomic_density})/(6.02e23)/(3.01604928) [gram(T)/m^2]
scaling_factor_2 = '${units 3.44e10 g/m^2}' # (1.0e3)*(1.0e3)*(${tungsten_atomic_density})/(6.02e23)/(3.01604928) [gram(T)/m^2]
[Functions<<<{"href": "../../syntax/Functions/index.html"}>>>]
[t_in_cycle]
type = ParsedFunction<<<{"description": "Function created by parsing a string", "href": "../../source/functions/MooseParsedFunction.html"}>>>
expression<<<{"description": "The user defined function."}>>> = 't % ${plasma_cycle_time}'
[]
# pulse between 0 and 1 following the plasma operation
[pulse_time_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."}>>> = 't_in_cycle'
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."}>>> = 't_in_cycle'
expression<<<{"description": "The user defined function."}>>> = 'if(t_in_cycle < ${plasma_ramp_time}, t_in_cycle/${plasma_ramp_time},
if(t_in_cycle < ${plasma_ss_end}, 1,
if(t_in_cycle < ${plasma_ramp_down_end}, 1 - (t_in_cycle-${plasma_ss_end})/${plasma_ramp_time}, 0.0)))'
[]
[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."}>>> = '(${plasma_max_flux} - ${plasma_min_flux}) * pulse_time_function + ${plasma_min_flux}'
[]
[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."}>>> = '(${plasma_max_heat} - ${plasma_min_heat}) * pulse_time_function + ${plasma_min_heat}'
[]
[temperature_inner_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."}>>> = '(${temperature_coolant_max} - ${temperature_initial}) * pulse_time_function + ${temperature_initial}'
[]
[timestep_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."}>>> = 't_in_cycle'
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."}>>> = 't_in_cycle'
expression<<<{"description": "The user defined function."}>>> = 'if(t_in_cycle < ${fparse 0.1 * plasma_ramp_time} , 20,
if(t_in_cycle < ${fparse 0.9 * plasma_ramp_time} , 40,
if(t_in_cycle < ${fparse 1.1 * plasma_ramp_time} , 20,
if(t_in_cycle < ${fparse plasma_ss_end - 20} , 40,
if(t_in_cycle < ${plasma_ss_end} , 20,
if(t_in_cycle < ${fparse plasma_ramp_down_end - 10}, 4,
if(t_in_cycle < ${fparse plasma_ramp_down_end + 10}, 20,
if(t_in_cycle < ${fparse plasma_cycle_time - 100} , 200,
if(t_in_cycle < ${plasma_cycle_time} , 40, 2)))))))))'
[]
[]
[AuxVariables<<<{"href": "../../syntax/AuxVariables/index.html"}>>>]
[flux_y]
order<<<{"description": "Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)"}>>> = FIRST
family<<<{"description": "Specifies the family of FE shape functions to use for this variable"}>>> = MONOMIAL
[]
############################## AuxVariables for W (block = 4)
[Sc_C_mobile_W]
block = 4
[]
[Sc_C_trapped_W]
block = 4
[]
[C_total_W]
block = 4
[]
[Sc_C_total_W]
block = 4
[]
[S_empty_W]
block = 4
[]
[Sc_S_empty_W]
block = 4
[]
[S_trapped_W]
block = 4
[]
[Sc_S_trapped_W]
block = 4
[]
[S_total_W]
block = 4
[]
[Sc_S_total_W]
block = 4
[]
############################## AuxVariables for Cu (block = 3)
[Sc_C_mobile_Cu]
block = 3
[]
[Sc_C_trapped_Cu]
block = 3
[]
[C_total_Cu]
block = 3
[]
[Sc_C_total_Cu]
block = 3
[]
[S_empty_Cu]
block = 3
[]
[Sc_S_empty_Cu]
block = 3
[]
[S_trapped_Cu]
block = 3
[]
[Sc_S_trapped_Cu]
block = 3
[]
[S_total_Cu]
block = 3
[]
[Sc_S_total_Cu]
block = 3
[]
############################## AuxVariables for CuCrZr (block = 2)
[Sc_C_mobile_CuCrZr]
block = 2
[]
[Sc_C_trapped_CuCrZr]
block = 2
[]
[C_total_CuCrZr]
block = 2
[]
[Sc_C_total_CuCrZr]
block = 2
[]
[S_empty_CuCrZr]
block = 2
[]
[Sc_S_empty_CuCrZr]
block = 2
[]
[S_trapped_CuCrZr]
block = 2
[]
[Sc_S_trapped_CuCrZr]
block = 2
[]
[S_total_CuCrZr]
block = 2
[]
[Sc_S_total_CuCrZr]
block = 2
[]
[]
[Preconditioning<<<{"href": "../../syntax/Preconditioning/index.html"}>>>]
[smp]
type = SMP<<<{"description": "Single matrix preconditioner (SMP) builds a preconditioner using user defined off-diagonal parts of the Jacobian.", "href": "../../source/preconditioners/SingleMatrixPreconditioner.html"}>>>
full<<<{"description": "Set to true if you want the full set of couplings between variables simply for convenience so you don't have to set every off_diag_row and off_diag_column combination."}>>> = true
[]
[]
[Executioner<<<{"href": "../../syntax/Executioner/index.html"}>>>]
type = Transient
scheme = bdf2
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_shift_type'
petsc_options_value = 'lu NONZERO'
nl_rel_tol = 1e-6 # 1e-8 works for 1 cycle
nl_abs_tol = 1e-7 # 1e-11 works for 1 cycle
end_time = '${fparse 50 * plasma_cycle_time}' # 50 ITER shots
automatic_scaling = true
line_search = 'none'
dtmin = 1e-4
nl_max_its = 18
[TimeStepper<<<{"href": "../../syntax/Executioner/TimeStepper/index.html"}>>>]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 15
iteration_window = 1
growth_factor = 1.2
cutback_factor = 0.8
timestep_limiting_postprocessor = timestep_max_pp
[]
[](test/tests/divertor_monoblock/divertor_monoblock_common_base.i)# This input file contains key pieces for the divertor monoblock case that includes multiple
# variables.
# It cannot be run on its own and is included in the main input files for two cases, namely:
# - divertor_monoblock.i
# - divertor_monoblock_physics.i
[AuxKernels<<<{"href": "../../syntax/AuxKernels/index.html"}>>>]
############################## AuxKernels for W (block = 4)
[Scaled_mobile_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_mobile_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_mobile_W
[]
[Scaled_trapped_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_trapped_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_trapped_W
[]
[total_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = C_total_W
type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../source/auxkernels/ParsedAux.html"}>>>
expression<<<{"description": "Parsed function expression to compute"}>>> = 'C_mobile_W + C_trapped_W'
coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = 'C_mobile_W C_trapped_W'
[]
[Scaled_total_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_total_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_total_W
[]
[empty_sites_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_empty_W
type = EmptySitesAux<<<{"description": "Calculates the concentration of empty trapping sites.", "href": "../../source/auxkernels/EmptySitesAux.html"}>>>
N<<<{"description": "The atomic number density of the host material (1/m^3)"}>>> = ${N_W}
Ct0<<<{"description": "The fraction of host sites that can contribute to trapping as a function (-)"}>>> = ${Ct0_W}
trap_per_free<<<{"description": "An estimate for the ratio of the concentration magnitude of trapped species to free species. Setting a value for this can be helpful in producing a well-scaled matrix"}>>> = ${trap_per_free_W}
trapped_concentration_variables<<<{"description": "Variables representing trapped particle concentrations."}>>> = C_trapped_W
[]
[scaled_empty_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_empty_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_empty_W
[]
[trapped_sites_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_trapped_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = 1e0
source_variable<<<{"description": "The variable to be normalized"}>>> = C_trapped_W
[]
[scaled_trapped_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_trapped_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_trapped_W
[]
[total_sites_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_total_W
type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../source/auxkernels/ParsedAux.html"}>>>
expression<<<{"description": "Parsed function expression to compute"}>>> = 'S_trapped_W + S_empty_W'
coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = 'S_trapped_W S_empty_W'
[]
[scaled_total_W]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_total_W
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_total_W
[]
############################## AuxKernels for Cu (block = 3)
[Scaled_mobile_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_mobile_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_mobile_Cu
[]
[Scaled_trapped_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_trapped_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_trapped_Cu
[]
[total_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = C_total_Cu
type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../source/auxkernels/ParsedAux.html"}>>>
expression<<<{"description": "Parsed function expression to compute"}>>> = 'C_mobile_Cu + C_trapped_Cu'
coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = 'C_mobile_Cu C_trapped_Cu'
[]
[Scaled_total_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_total_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_total_Cu
[]
[empty_sites_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_empty_Cu
type = EmptySitesAux<<<{"description": "Calculates the concentration of empty trapping sites.", "href": "../../source/auxkernels/EmptySitesAux.html"}>>>
N<<<{"description": "The atomic number density of the host material (1/m^3)"}>>> = ${N_Cu}
Ct0<<<{"description": "The fraction of host sites that can contribute to trapping as a function (-)"}>>> = ${Ct0_Cu}
trap_per_free<<<{"description": "An estimate for the ratio of the concentration magnitude of trapped species to free species. Setting a value for this can be helpful in producing a well-scaled matrix"}>>> = ${trap_per_free_Cu}
trapped_concentration_variables<<<{"description": "Variables representing trapped particle concentrations."}>>> = C_trapped_Cu
[]
[scaled_empty_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_empty_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_empty_Cu
[]
[trapped_sites_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_trapped_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = 1e0
source_variable<<<{"description": "The variable to be normalized"}>>> = C_trapped_Cu
[]
[scaled_trapped_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_trapped_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_trapped_Cu
[]
[total_sites_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_total_Cu
type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../source/auxkernels/ParsedAux.html"}>>>
expression<<<{"description": "Parsed function expression to compute"}>>> = 'S_trapped_Cu + S_empty_Cu'
coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = 'S_trapped_Cu S_empty_Cu'
[]
[scaled_total_Cu]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_total_Cu
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_total_Cu
[]
############################## AuxKernels for CuCrZr (block = 2)
[Scaled_mobile_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_mobile_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_mobile_CuCrZr
[]
[Scaled_trapped_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_trapped_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_trapped_CuCrZr
[]
[total_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = C_total_CuCrZr
type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../source/auxkernels/ParsedAux.html"}>>>
expression<<<{"description": "Parsed function expression to compute"}>>> = 'C_mobile_CuCrZr + C_trapped_CuCrZr'
coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = 'C_mobile_CuCrZr C_trapped_CuCrZr'
[]
[Scaled_total_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_C_total_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = C_total_CuCrZr
[]
[empty_sites_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_empty_CuCrZr
type = EmptySitesAux<<<{"description": "Calculates the concentration of empty trapping sites.", "href": "../../source/auxkernels/EmptySitesAux.html"}>>>
N<<<{"description": "The atomic number density of the host material (1/m^3)"}>>> = ${N_CuCrZr}
Ct0<<<{"description": "The fraction of host sites that can contribute to trapping as a function (-)"}>>> = ${Ct0_CuCrZr}
trap_per_free<<<{"description": "An estimate for the ratio of the concentration magnitude of trapped species to free species. Setting a value for this can be helpful in producing a well-scaled matrix"}>>> = ${trap_per_free_CuCrZr}
trapped_concentration_variables<<<{"description": "Variables representing trapped particle concentrations."}>>> = C_trapped_CuCrZr
[]
[scaled_empty_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_empty_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_empty_CuCrZr
[]
[trapped_sites_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_trapped_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = 1e0
source_variable<<<{"description": "The variable to be normalized"}>>> = C_trapped_CuCrZr
[]
[scaled_trapped_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_trapped_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_trapped_CuCrZr
[]
[total_sites_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = S_total_CuCrZr
type = ParsedAux<<<{"description": "Sets a field variable value to the evaluation of a parsed expression.", "href": "../../source/auxkernels/ParsedAux.html"}>>>
expression<<<{"description": "Parsed function expression to compute"}>>> = 'S_trapped_CuCrZr + S_empty_CuCrZr'
coupled_variables<<<{"description": "Vector of coupled variable names"}>>> = 'S_trapped_CuCrZr S_empty_CuCrZr'
[]
[scaled_total_CuCrZr]
variable<<<{"description": "The name of the variable that this object applies to"}>>> = Sc_S_total_CuCrZr
type = NormalizationAux<<<{"description": "Normalizes a variable based on a Postprocessor value.", "href": "../../source/auxkernels/NormalizationAux.html"}>>>
normal_factor<<<{"description": "The normalization factor"}>>> = ${tungsten_atomic_density}
source_variable<<<{"description": "The variable to be normalized"}>>> = S_total_CuCrZr
[]
[flux_y_W]
type = DiffusionFluxAux<<<{"description": "Compute components of flux vector for diffusion problems $(\\vec{J} = -D \\nabla C)$.", "href": "../../source/auxkernels/DiffusionFluxAux.html"}>>>
diffusivity<<<{"description": "The name of the diffusivity material property that will be used in the flux computation."}>>> = diffusivity_W
variable<<<{"description": "The name of the variable that this object applies to"}>>> = flux_y
diffusion_variable<<<{"description": "The name of the variable"}>>> = C_mobile_W
component<<<{"description": "The desired component of flux."}>>> = y
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 4
[]
[flux_y_Cu]
type = DiffusionFluxAux<<<{"description": "Compute components of flux vector for diffusion problems $(\\vec{J} = -D \\nabla C)$.", "href": "../../source/auxkernels/DiffusionFluxAux.html"}>>>
diffusivity<<<{"description": "The name of the diffusivity material property that will be used in the flux computation."}>>> = diffusivity_Cu
variable<<<{"description": "The name of the variable that this object applies to"}>>> = flux_y
diffusion_variable<<<{"description": "The name of the variable"}>>> = C_mobile_Cu
component<<<{"description": "The desired component of flux."}>>> = y
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 3
[]
[flux_y_CuCrZr]
type = DiffusionFluxAux<<<{"description": "Compute components of flux vector for diffusion problems $(\\vec{J} = -D \\nabla C)$.", "href": "../../source/auxkernels/DiffusionFluxAux.html"}>>>
diffusivity<<<{"description": "The name of the diffusivity material property that will be used in the flux computation."}>>> = diffusivity_CuCrZr
variable<<<{"description": "The name of the variable that this object applies to"}>>> = flux_y
diffusion_variable<<<{"description": "The name of the variable"}>>> = C_mobile_CuCrZr
component<<<{"description": "The desired component of flux."}>>> = y
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 2
[]
[]
[Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
############################################################ Postprocessors for W (block = 4)
[F_recombination]
type = SideDiffusiveFluxAverage<<<{"description": "Computes the average of the diffusive flux over the specified boundary", "href": "../../source/postprocessors/SideDiffusiveFluxAverage.html"}>>>
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 'top'
diffusivity<<<{"description": "The name of the diffusivity material property that will be used in the flux computation. This must be provided if the variable is of finite element type"}>>> = ${diffusivity_fixed}
variable<<<{"description": "The name of the variable which this postprocessor integrates"}>>> = Sc_C_total_W
[]
[F_permeation]
type = SideDiffusiveFluxAverage<<<{"description": "Computes the average of the diffusive flux over the specified boundary", "href": "../../source/postprocessors/SideDiffusiveFluxAverage.html"}>>>
boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = '2to1'
diffusivity<<<{"description": "The name of the diffusivity material property that will be used in the flux computation. This must be provided if the variable is of finite element type"}>>> = ${diffusivity_fixed}
variable<<<{"description": "The name of the variable which this postprocessor integrates"}>>> = Sc_C_total_CuCrZr
[]
[Int_C_mobile_W]
type = ElementIntegralVariablePostprocessor<<<{"description": "Computes a volume integral of the specified variable", "href": "../../source/postprocessors/ElementIntegralVariablePostprocessor.html"}>>>
variable<<<{"description": "The name of the variable that this object operates on"}>>> = C_mobile_W
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 4
[]
[ScInt_C_mobile_W]
type = ScalePostprocessor<<<{"description": "Scales a post-processor by a value", "href": "../../source/postprocessors/ScalePostprocessor.html"}>>>
value<<<{"description": "The postprocessor to be scaled"}>>> = Int_C_mobile_W
scaling_factor<<<{"description": "The scaling factor"}>>> = ${scaling_factor}
[]
[Int_C_trapped_W]
type = ElementIntegralVariablePostprocessor<<<{"description": "Computes a volume integral of the specified variable", "href": "../../source/postprocessors/ElementIntegralVariablePostprocessor.html"}>>>
variable<<<{"description": "The name of the variable that this object operates on"}>>> = C_trapped_W
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 4
[]
[ScInt_C_trapped_W]
type = ScalePostprocessor<<<{"description": "Scales a post-processor by a value", "href": "../../source/postprocessors/ScalePostprocessor.html"}>>>
value<<<{"description": "The postprocessor to be scaled"}>>> = Int_C_trapped_W
scaling_factor<<<{"description": "The scaling factor"}>>> = ${scaling_factor}
[]
[Int_C_total_W]
type = ElementIntegralVariablePostprocessor<<<{"description": "Computes a volume integral of the specified variable", "href": "../../source/postprocessors/ElementIntegralVariablePostprocessor.html"}>>>
variable<<<{"description": "The name of the variable that this object operates on"}>>> = C_total_W
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 4
[]
[ScInt_C_total_W]
type = ScalePostprocessor<<<{"description": "Scales a post-processor by a value", "href": "../../source/postprocessors/ScalePostprocessor.html"}>>>
value<<<{"description": "The postprocessor to be scaled"}>>> = Int_C_total_W
scaling_factor<<<{"description": "The scaling factor"}>>> = ${scaling_factor}
[]
# ############################################################ Postprocessors for Cu (block = 3)
[Int_C_mobile_Cu]
type = ElementIntegralVariablePostprocessor<<<{"description": "Computes a volume integral of the specified variable", "href": "../../source/postprocessors/ElementIntegralVariablePostprocessor.html"}>>>
variable<<<{"description": "The name of the variable that this object operates on"}>>> = C_mobile_Cu
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 3
[]
[ScInt_C_mobile_Cu]
type = ScalePostprocessor<<<{"description": "Scales a post-processor by a value", "href": "../../source/postprocessors/ScalePostprocessor.html"}>>>
value<<<{"description": "The postprocessor to be scaled"}>>> = Int_C_mobile_Cu
scaling_factor<<<{"description": "The scaling factor"}>>> = ${scaling_factor}
[]
[Int_C_trapped_Cu]
type = ElementIntegralVariablePostprocessor<<<{"description": "Computes a volume integral of the specified variable", "href": "../../source/postprocessors/ElementIntegralVariablePostprocessor.html"}>>>
variable<<<{"description": "The name of the variable that this object operates on"}>>> = C_trapped_Cu
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 3
[]
[ScInt_C_trapped_Cu]
type = ScalePostprocessor<<<{"description": "Scales a post-processor by a value", "href": "../../source/postprocessors/ScalePostprocessor.html"}>>>
value<<<{"description": "The postprocessor to be scaled"}>>> = Int_C_trapped_Cu
scaling_factor<<<{"description": "The scaling factor"}>>> = ${scaling_factor_2}
[]
[Int_C_total_Cu]
type = ElementIntegralVariablePostprocessor<<<{"description": "Computes a volume integral of the specified variable", "href": "../../source/postprocessors/ElementIntegralVariablePostprocessor.html"}>>>
variable<<<{"description": "The name of the variable that this object operates on"}>>> = C_total_Cu
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 3
[]
[ScInt_C_total_Cu]
type = ScalePostprocessor<<<{"description": "Scales a post-processor by a value", "href": "../../source/postprocessors/ScalePostprocessor.html"}>>>
value<<<{"description": "The postprocessor to be scaled"}>>> = Int_C_total_Cu
scaling_factor<<<{"description": "The scaling factor"}>>> = ${scaling_factor}
[]
# ############################################################ Postprocessors for CuCrZr (block = 2)
[Int_C_mobile_CuCrZr]
type = ElementIntegralVariablePostprocessor<<<{"description": "Computes a volume integral of the specified variable", "href": "../../source/postprocessors/ElementIntegralVariablePostprocessor.html"}>>>
variable<<<{"description": "The name of the variable that this object operates on"}>>> = C_mobile_CuCrZr
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 2
[]
[ScInt_C_mobile_CuCrZr]
type = ScalePostprocessor<<<{"description": "Scales a post-processor by a value", "href": "../../source/postprocessors/ScalePostprocessor.html"}>>>
value<<<{"description": "The postprocessor to be scaled"}>>> = Int_C_mobile_CuCrZr
scaling_factor<<<{"description": "The scaling factor"}>>> = ${scaling_factor}
[]
[Int_C_trapped_CuCrZr]
type = ElementIntegralVariablePostprocessor<<<{"description": "Computes a volume integral of the specified variable", "href": "../../source/postprocessors/ElementIntegralVariablePostprocessor.html"}>>>
variable<<<{"description": "The name of the variable that this object operates on"}>>> = C_trapped_CuCrZr
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 2
[]
[ScInt_C_trapped_CuCrZr]
type = ScalePostprocessor<<<{"description": "Scales a post-processor by a value", "href": "../../source/postprocessors/ScalePostprocessor.html"}>>>
value<<<{"description": "The postprocessor to be scaled"}>>> = Int_C_trapped_CuCrZr
scaling_factor<<<{"description": "The scaling factor"}>>> = ${scaling_factor_2}
[]
[Int_C_total_CuCrZr]
type = ElementIntegralVariablePostprocessor<<<{"description": "Computes a volume integral of the specified variable", "href": "../../source/postprocessors/ElementIntegralVariablePostprocessor.html"}>>>
variable<<<{"description": "The name of the variable that this object operates on"}>>> = C_total_CuCrZr
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 2
[]
[ScInt_C_total_CuCrZr]
type = ScalePostprocessor<<<{"description": "Scales a post-processor by a value", "href": "../../source/postprocessors/ScalePostprocessor.html"}>>>
value<<<{"description": "The postprocessor to be scaled"}>>> = Int_C_total_CuCrZr
scaling_factor<<<{"description": "The scaling factor"}>>> = ${scaling_factor}
[]
############################################################ Postprocessors for others
[dt]
type = TimestepSize<<<{"description": "Reports the timestep size", "href": "../../source/postprocessors/TimestepSize.html"}>>>
[]
[temperature_top]
type = PointValue<<<{"description": "Compute the value of a variable at a specified location", "href": "../../source/postprocessors/PointValue.html"}>>>
variable<<<{"description": "The name of the variable that this postprocessor operates on."}>>> = temperature
point<<<{"description": "The physical point where the solution will be evaluated."}>>> = '0 ${fparse block_size / 2} 0'
[]
[temperature_tube]
type = PointValue<<<{"description": "Compute the value of a variable at a specified location", "href": "../../source/postprocessors/PointValue.html"}>>>
variable<<<{"description": "The name of the variable that this postprocessor operates on."}>>> = temperature
point<<<{"description": "The physical point where the solution will be evaluated."}>>> = '0 ${radius_coolant} 0'
[]
# Limit timestep
[timestep_max_pp]
# s
type = FunctionValuePostprocessor<<<{"description": "Computes the value of a supplied function at a single point (scalable)", "href": "../../source/postprocessors/FunctionValuePostprocessor.html"}>>>
function<<<{"description": "The function which supplies the postprocessor value."}>>> = timestep_function
[]
[]
[VectorPostprocessors<<<{"href": "../../syntax/VectorPostprocessors/index.html"}>>>]
[line]
type = LineValueSampler<<<{"description": "Samples variable(s) along a specified line", "href": "../../source/vectorpostprocessors/LineValueSampler.html"}>>>
start_point<<<{"description": "The beginning of the line"}>>> = '0 ${fparse block_size / 2} 0'
end_point<<<{"description": "The ending of the line"}>>> = '0 ${radius_coolant} 0'
num_points<<<{"description": "The number of points to sample along the line"}>>> = 100
sort_by<<<{"description": "What to sort the samples by. Options include 'x', 'y', 'z', 'id', and the name of any of the sampled quantities (which each create a vector of the same name)."}>>> = 'y'
variable<<<{"description": "The names of the variables that this VectorPostprocessor operates on"}>>> = 'C_total_W C_total_Cu C_total_CuCrZr C_mobile_W C_mobile_Cu C_mobile_CuCrZr C_trapped_W C_trapped_Cu C_trapped_CuCrZr flux_y temperature'
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."}>>> = timestep_end
[]
[](test/tests/divertor_monoblock/divertor_monoblock_multi_variable_base.i)[Outputs<<<{"href": "../../syntax/Outputs/index.html"}>>>]
[exodus]
type = Exodus<<<{"description": "Object for output data in the Exodus format", "href": "../../source/outputs/Exodus.html"}>>>
sync_only<<<{"description": "Only export results at sync times"}>>> = false
# Output at key moments in the first two cycles, and then at the end of the simulation
sync_times<<<{"description": "Times at which the output and solution is forced to occur"}>>> = '${fparse 1.1 * plasma_ramp_time} ${fparse plasma_ss_end - 20} ${fparse plasma_ramp_down_end - 10} ${plasma_cycle_time} ${fparse plasma_cycle_time + 1.1 * plasma_ramp_time} ${fparse plasma_cycle_time + plasma_ss_end - 20} ${fparse plasma_cycle_time + plasma_ramp_down_end - 10} ${fparse 2 * plasma_cycle_time} ${fparse 50 * plasma_cycle_time}'
[]
csv<<<{"description": "Output the scalar variable and postprocessors to a *.csv file using the default CSV output."}>>> = true
hide<<<{"description": "A list of the variables and postprocessors that should NOT be output to the Exodus file (may include Variables, ScalarVariables, and Postprocessor names)."}>>> = 'dt
Int_C_mobile_W Int_C_trapped_W Int_C_total_W
Int_C_mobile_Cu Int_C_trapped_Cu Int_C_total_Cu
Int_C_mobile_CuCrZr Int_C_trapped_CuCrZr Int_C_total_CuCrZr'
perf_graph<<<{"description": "Enable printing of the performance graph to the screen (Console)"}>>> = true
[](test/tests/divertor_monoblock/divertor_monoblock_output_base.i)References
- James Ambrosek and GR Longhurst.
Verification and Validation of TMAP7.
Technical Report INEEL/EXT-04-01657, Idaho National Engineering and Environmental Laboratory, December 2008.[Export]
- L. Charlot, E. Shemon, G. Giudicelli, P. Behne, B. Spencer, Z. M. Prince, Y. Miao, Y. Cao, S. Kyu Lee, N. E. Stauff, T. Lange, O. Calvin, K. Swanson, D. Yankura, P.-C. A. Simon, M. Shimada, and T. Folk.
Update on new models available on the Virtual Test Bed (VTB) in 2025.
In Transactions of the American Nuclear Society. June 2025.
doi:10.13182/T133-49163.[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]
- 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]