TRISO Bison Model

Contact: Wen Jiang, wjiang8.at.ncsu.edu

Model link: TRISO Bison Model

The input file of triso_1d.i is a 1D TRISO model with perfectly spherical geometry. The input files of triso_2d_aspherical.i and triso_2d_ipyc_cracking.i are 2D RZ-symmetric TRISO models with spherical geometry and IPyC cracking, respectively. The input file of triso_3d is a one-eighth 3D TRISO model with perfectly spherical geometry. Interested readers are referred to (Jiang et al., 2021) for more details about TRISO modeling capability in Bison.

The fuel parameters are given in Table 1. The irradiation condition is summarized in Table 2

Table 1: Fuel parameters used in this input file

ParameterValues
U enrichment (wt %)15.5
Carbon/uranium (atomic ratio)0.4
Oxygen/uranium (atomic ratio)1.5
Kernel diameter ( m)425
Buffer thickness ( m)100
IPyC/OPyC thickness ( m)40
SiC thickness ( m)35
Kernel density (g/cm)11.0
Kernel theoretical density (g/cm)11.4
Buffer density (g/cm)1.05
Buffer theoretical density (g/cm)2.25
IPyC density (g/cm)1.90
OPyC density (g/cm)1.90
IPyC/OPyC BAF1.05

Table 2: Irradiation condition used in this input file

EFPDBurnup (%FIMA)Fast fluency (, E>0.18 Mev)Irradiation temperature (C)
50013.55700

Users can plot the stress histories using the csv output. As shown in Figure 1, the tangential stress is compressive in the SiC layer . The compressive stress in the SiC layer decreases due to irradiation creep. The internal pressure that results in increasing tensile stress in the SiC layer is caused by fission gas buildup. More results of this example can be found in Jiang et al. (2021).

Figure 1: Tangential stress for SiC.

Input Description

Bison uses a block-structured input syntax. Each block begins with square brackets which contain the type of input and ends with empty square brackets. Each block may contain sub-blocks. The blocks in the input file are described in the order as they appear. Before the first block entries, users can define variables and specify their values which are subsequently used in the input model. For example,

kernel_radius = 213.35e-6 # micron
buffer_thickness = 98.9e-6 # micron
IPyC_thickness = 40.4e-6 # micron
SiC_thickness = 35.2e-6 # micron
OPyC_thickness = 43.4e-6 # micron

In Bison, comments are entered after the # sign

If not explicitly specified, the blocks described below apply across 1D, 2D, and 3D cases.

Global parameters

This block contains the parameters that might be used in multiple blocks. For example, to specify initial Oxygen to Uranium atom ratio, the user can input



O_U	= 1.5

Mesh

TRISO1DMeshGenerator creates a 1D mesh appropriate for use in TRISO analysis. The user supplies radial coordinates that mark the boundaries of mesh blocks. A list of numbers of radial elements per block is also supplied. A 0 for the elements in the block represents a gap and is typically used for the gap that opens between the buffer and IPyC layers.

[Mesh]
  [gen]
    type = TRISO1DMeshGenerator
    elem_type = EDGE2
    coordinates = '0 ${coordinates1} ${coordinates2} ${coordinates2} ${coordinates3} ${coordinates4} ${coordinates5}'
    mesh_density = '5 3 0 5 3 4'
    block_names = 'fuel buffer IPyC SiC OPyC'
  []
[]
(htgr/triso_fuel/triso_1d.i)

TRISO2DMeshGenerator creates a 2D mesh appropriate for use in TRISO analysis. The user supplies radial coordinates that mark the boundaries of mesh blocks. A list of numbers of elements per block is also supplied. A 0 for the elements in the block represents a gap and is typically used for the gap that opens between the buffer and IPyC layers. Aspherical meshes are supported, allowing the mesh to have a flat facet at the bottom of the particle. This is accomplished through the aspect_ratio parameter. Two varieties of aspherical meshes are available. These are selected through the aspherical_type parameter. The first of these, vary_buffer, creates meshes with thinned buffers. The resulting mesh includes a small fillet at the junction of the flat facet and the original, circular geometry. The second type, vary_outer, thins the outer layers slightly near the centerline and thickens them toward the edge of the facet.

[Mesh]
  [gen]
    type = TRISO2DMeshGenerator
    elem_type = quad4
    coordinates = '0 ${coordinates1} ${coordinates2} ${coordinates2} ${coordinates3} ${coordinates4} ${coordinates5}'
    mesh_density = '20 8 0 4 4 4'
    block_names = 'fuel buffer IPyC SiC OPyC'
    num_sectors = 60
    aspect_ratio = ${aspect_ratio}
    all_bottom_left = True
    aspherical_type = vary_outer
  []
[]
(htgr/triso_fuel/triso_2d_aspherical.i)

TRISO3DMeshGenerator creates a 3D mesh appropriate for use in TRISO analysis. The user supplies radial coordinates that mark the boundaries of mesh blocks. A list of numbers of elements per block is also supplied. A 0 for the elements in the block represents a gap and is typically used for the gap that opens between the buffer and IPyC layers.

[Mesh]
  [gen]
    type = TRISO3DMeshGenerator
    elem_type = HEX8
    coordinates = '0 ${coordinates1} ${coordinates2} ${coordinates2} ${coordinates3} ${coordinates4} ${coordinates5}'
    mesh_density = '10 6 0 4 4 4'
    block_names = 'fuel buffer IPyC SiC OPyC'
    num_sectors = 20
    portion = eighth
  []
[]
(htgr/triso_fuel/triso_3d.i)

UserObjects

TRISOGeometry outputs the TRISO particle and pebble geometry determined from the mesh at the beginning of the simulation. This capability is available in 2D and 3D.

[UserObjects]
  [particle_geometry]
    type = TRISOGeometry
    outer_OPyC = OPyC_outer_boundary
    outer_SiC = SiC_outer_boundary
    outer_IPyC = IPyC_outer_boundary
    inner_IPyC = IPyC_inner_boundary
    outer_buffer = buffer_outer_boundary
    outer_kernel = fuel_outer_boundary
    include_particle = true
    include_pebble = false
    IPyC_thickness_mean = 40.4e-6
    SiC_thickness_mean = 35.2e-6
    OPyC_thickness_mean = 43.4e-6
  []
[]
(htgr/triso_fuel/triso_1d.i)

Only for 2D IPyC cracking case, we need to use this userobject to model the crack with the X-FEM module. The crack geometry is specified by LineSegmentCutUserObject.

[UserObjects]
  [ipyc_crack]
    type = LineSegmentCutUserObject
    cut_data = '0.0000 0.0 0.001 0.0'
    time_start_cut = 0.0
    time_end_cut = 0.0
    block = IPyC
  []
[]
(htgr/triso_fuel/triso_2d_ipyc_cracking.i)

XFEM Action

We only need to add this Action for the 2D IPyC cracking case. The X-FEM XFEM action is needed to model a crack in the IPyC layer. The X-FEM quadrature rule is selected through the qrule parameter and the output the XFEM cut plane and volume fraction can be specicifed by output_cut_plane parameter.

Solid Mechanics Action

The solid mechanics QuasiStatic action simplifies the input file syntax for creating a solid mechanics model. It specifies the thermo-mechanical models of the kernel, buffer, IPyC/OPyC and SiC.

[Physics]
  [SolidMechanics]
    [QuasiStatic]
      generate_output = 'stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz max_principal_stress'
      add_variables = true
      strain = FINITE
      temperature = temperature
      [fuel]
        block = fuel
        eigenstrain_names = 'UCO_swelling_eigenstrain UCO_TE_strain'
        extra_vector_tags = 'ref'
      []
      [buffer]
        block = buffer
        eigenstrain_names = 'Buffer_IIDC_strain Buffer_TE_strain'
        extra_vector_tags = 'ref'
      []
      [IPyC]
        block = IPyC
        eigenstrain_names = 'IPyC_IIDC_strain IPyC_TE_strain'
        extra_vector_tags = 'ref'
      []
      [SiC]
        block = SiC
        eigenstrain_names = 'SiC_thermal_eigenstrain'
        extra_vector_tags = 'ref'
      []
      [OPyC]
        block = OPyC
        eigenstrain_names = 'OPyC_IIDC_strain OPyC_TE_strain'
        extra_vector_tags = 'ref'
      []
    []
  []
[]
(htgr/triso_fuel/triso_1d.i)

Kernel

The kernels used for solving heat equations are listed here.

[Kernels]
  [heat_ie]
    type = HeatConductionTimeDerivative
    variable = temperature
    extra_vector_tags = 'ref'
  []
[]
(htgr/triso_fuel/triso_1d.i)
[Kernels]
  [heat]
    type = HeatConduction
    variable = temperature
    extra_vector_tags = 'ref'
  []
[]
(htgr/triso_fuel/triso_1d.i)
[Kernels]
  [heat_source]
    type = NeutronHeatSource
    variable = temperature
    block = fuel
    fission_rate = fission_rate
    extra_vector_tags = 'ref'
  []
[]
(htgr/triso_fuel/triso_1d.i)

Thermal Contact

The ThermalContactAction action sets up the set of models used to enforce thermal contact across the buffer and IPyC surfaces.

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

Boundary Condition

The boundary conditions of displacements and temperature are set in this block. The inner pressure caused by fission gas buildup is set by PlenumPressure Action.

[BCs]
  [PlenumPressure]
    [plenumPressure]
      boundary = buffer_IPyC_boundary
      startup_time = 1e4
      initial_pressure = 0
      R = 8.3145
      output_initial_moles = initial_moles
      temperature = ave_gas_temp
      volume = 'gap_volume buffer_void_volume kernel_void_volume'
      material_input = 'fis_gas_released'
      output = gas_pressure
    []
  []
[]
(htgr/triso_fuel/triso_1d.i)

If IPyC cracking is modeled, the symmetric boundary conditions need to exclude the boundary of crack surface.

[BCs]
  [no_disp_y]
    type = DirichletBC
    variable = disp_y
    boundary = '2001 2002 2004 2005' # do not include crack surface
    value = 0.0
  []
[]
(htgr/triso_fuel/triso_2d_ipyc_cracking.i)

For this 3D example, symmetric boundary conditions are applied.

Material

Thermo-mechanical properties of a TRISO particle are specified in this block. The description of each model can be found in Jiang et al. (2021).

Postprocessors

This block is used to specify the output variables written to a csv file that can be further processed in Excel or Python. For example, to output the tangential stress in SiC:

[Materials]
  [SiC_stress]
    type = ComputeFiniteStrainElasticStress
    block = SiC
  []
[]
(htgr/triso_fuel/triso_1d.i)

References

  1. Wen Jiang, Jason D. Hales, Benjamin W. Spencer, Blaise P. Collin, Andrew E. Slaughter, Stephen R. Novascone, Aysenur Toptan, Kyle A. Gamble, and Russell Gardner. Triso particle fuel performance and failure analysis with bison. Journal of Nuclear Materials, 548:152795, 2021.[BibTeX]