Nuclear Material BCs

Action for creating boundary conditions associated with NuclearMaterials and arrays of Layered2D fuel rods.

Description of Created Blocks

This NuclearMaterialBCs action generates a set of thermal and mechanical boundary conditions for use in reducing the input file size for arrays of fuel rods for LWR simulation.

warningwarning:For LWR Use Only

This action is designed for use with only arrays of light water reactor fuel rods using Layered2D meshes.

User-based Interface

To reduce the length and complexity of necessary blocks for simulations, a standard set of boundary conditions are optionallly created when analyzing an array of fuel rods. An array of fuel rods is created with the Layered2DArray mesh generator. The use of compress_boundary_ids = true with Layered2DArray is required.

The thermal and mechanical boundary conditions, along with helper classes, are created internally based on the bc_types parameter under the NuclearMaterials block. The options to this parameter are Temperature, Displacement, PlenumPressure, and SystemPressure.

Temperature

The Temperature option to bc_types will create a Dirichlet thermal boundary condition on the outside surface of the cladding. When this option is active, the parameter temperature_bc_function must also be given.

Displacement

The Displacement option to bc_types will create Dirichlet displacement boundary conditions on the symmetry surfaces of the fuel rods in the array. No additional parameters are required.

PlenumPressure

The PlenumPressure option to bc_types will create individual plenum pressure boundary conditions for each rod in the array. When this option is active, the parameters initial_plenum_pressure and pitch must also be given. The classes needed to calculate layered plenum temperature and layered plenum volume are also created.

SystemPressure

The SystemPressure option to bc_types will create a set of Pressure boundary conditions on the exterior surfaces of the fuel rods. When this option is active, the parameter system_pressure_function must also be given.

Example Input Syntax

[NuclearMaterials<<<{"href": "../index.html"}>>>]
  fission_operation<<<{"description": "Type of fission occuring in this simulation."}>>> = normal
  physics<<<{"description": "Type(s) of physics used on this block."}>>> = 'mechanics thermal'
  strain<<<{"description": "Strain formulation"}>>> = FINITE
  initial_temperature<<<{"description": "Initial temperature in Kelvins."}>>> = ${initial_temperature}
  stress_free_temperature<<<{"description": "Reference temperature for thermal eigenstrain calculation"}>>> = ${initial_temperature}
  temperature<<<{"description": "Coupled temperature: Used in multiple models"}>>> = temperature
  temperature_bc_function<<<{"description": "The function to use for the temperature boundary condition."}>>> = temperature_func
  bc_types<<<{"description": "The types of boundary conditions to create with NuclearMaterials and arrays of Layered2D fuel rods."}>>> = 'Displacement PlenumPressure SystemPressure Temperature'
  contact_types<<<{"description": "The types of contact constraints to create with NuclearMaterials and arrays of Layered2D fuel rods."}>>> = 'fuel_cladding'
  fuel_pin_geometry<<<{"description": "Name of the UserObject that reads the pin geometry from the mesh."}>>> = fred
  initial_plenum_pressure<<<{"description": "The initial pressure in the plenum."}>>> = 4.0e6
  system_pressure_function<<<{"description": "The function to use for the pressure on the exterior of the cladding."}>>> = system_pressure
  axial_direction<<<{"description": "The direction perpendicular to the circular cross section."}>>> = z
  [UO2<<<{"href": "../UO2/index.html"}>>>]
    [pellets]
      block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to"}>>> = fuel
      uo2_models<<<{"description": "Type(s) of physics models used on this block.   The choices are: Burnup Elastic Creep Relocation Swelling ThermalExpansion HighBurnupStructureFormation"}>>> = 'elastic relocation swelling thermalexpansion'
      burnup_function<<<{"description": "Burnup function"}>>> = illinois
      axial_power_profile<<<{"description": "The axial power peaking function."}>>> = axial_power_factor
      density<<<{"description": "The initial fuel density."}>>> = ${fuel_density}
      extra_vector_tags<<<{"description": "The tag names for extra vectors that residual data should be saved into"}>>> = 'ref'
    []
  []
  [ZirconiumAlloy<<<{"href": "../ZirconiumAlloy/index.html"}>>>]
    [clad]
      block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to"}>>> = clad
      cladding_models<<<{"description": "Type(s) of physics models used on this block.   The choices are: Creep Elastic Plasticity ZryOxidation IrradiationGrowth ThermalExpansion ZrPhase ZryCladdingFailure"}>>> = 'elastic creep thermalexpansion irradiationgrowth'
      extra_vector_tags<<<{"description": "The tag names for extra vectors that residual data should be saved into"}>>> = 'ref'
    []
  []
[]
(test/tests/layered2D/arrayAction.i)

Input Parameters

  • active__all__ If specified only the blocks named will be visited and made active

    Default:__all__

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:If specified only the blocks named will be visited and made active

  • add_variablesFalseAdd the displacement variables

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Add the displacement variables

  • automatic_eigenstrain_namesTrueCollects all material eigenstrains and passes to required strain calculator within the solid mechanics physics internally.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Collects all material eigenstrains and passes to required strain calculator within the solid mechanics physics internally.

  • bc_typesThe types of boundary conditions to create with NuclearMaterials and arrays of Layered2D fuel rods.

    C++ Type:MultiMooseEnum

    Options:Displacement, PlenumPressure, SystemPressure, Temperature

    Controllable:No

    Description:The types of boundary conditions to create with NuclearMaterials and arrays of Layered2D fuel rods.

  • blockThe list of blocks (ids or names) that this object will be applied

    C++ Type:std::vector<SubdomainName>

    Controllable:No

    Description:The list of blocks (ids or names) that this object will be applied

  • d1_functionFunction to be multiplied by d1

    C++ Type:std::vector<FunctionName>

    Unit:(no unit assumed)

    Controllable:No

    Description:Function to be multiplied by d1

  • d1_function_variableVariable to be used when evaluating d1_function. If not given, time will be used.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:Variable to be used when evaluating d1_function. If not given, time will be used.

  • decomposition_methodEigenSolutionMethods to calculate the finite strain and rotation increments

    Default:EigenSolution

    C++ Type:MooseEnum

    Options:TaylorExpansion, EigenSolution, HughesWinget

    Controllable:No

    Description:Methods to calculate the finite strain and rotation increments

  • diffusion_1st_activation_energiesDiffusion activation energies.

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Diffusion activation energies.

  • diffusion_1st_coefficients1st diffusion coefficient.

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:1st diffusion coefficient.

  • diffusion_2nd_activation_energiesSecond diffusion activation energy

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Second diffusion activation energy

  • diffusion_2nd_coefficients2nd diffusion coefficient

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:2nd diffusion coefficient

  • displacementsThe displacements appropriate for the simulation geometry and coordinate system: Used in density and strain models

    C++ Type:std::vector<VariableName>

    Unit:(no unit assumed)

    Controllable:No

    Description:The displacements appropriate for the simulation geometry and coordinate system: Used in density and strain models

  • element_decay_constantsRadioactive decay constant for elements tracked

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Radioactive decay constant for elements tracked

  • element_scalingRelative scaling of element percentages

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Relative scaling of element percentages

  • elements_initial_concentrationRelative ratio of element concentration

    C++ Type:std::vector<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Relative ratio of element concentration

  • elements_trackedThe elements tracked within TRISO simulations.

    C++ Type:MultiMooseEnum

    Options:Ag, Cs, Sr

    Controllable:No

    Description:The elements tracked within TRISO simulations.

  • extra_vector_tagsThe tag names for extra vectors that residual data should be saved into

    C++ Type:std::vector<TagName>

    Controllable:No

    Description:The tag names for extra vectors that residual data should be saved into

  • familyLAGRANGESpecifies the family of FE shape functions to use for this variable.

    Default:LAGRANGE

    C++ Type:std::string

    Controllable:No

    Description:Specifies the family of FE shape functions to use for this variable.

  • flux_factor1Constant multiplied against the function, rod average linear power, or q_variable.

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Constant multiplied against the function, rod average linear power, or q_variable.

  • flux_functionThe function that describes the fast neutron flux

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:The function that describes the fast neutron flux

  • fuel_pin_geometryName of the UserObject that reads the pin geometry from the mesh.

    C++ Type:UserObjectName

    Controllable:No

    Description:Name of the UserObject that reads the pin geometry from the mesh.

  • generate_outputAdd scalar quantity output for stress and/or strain

    C++ Type:MultiMooseEnum

    Options:cauchy_stress_xx, cauchy_stress_xy, cauchy_stress_xz, cauchy_stress_yx, cauchy_stress_yy, cauchy_stress_yz, cauchy_stress_zx, cauchy_stress_zy, cauchy_stress_zz, creep_strain_xx, creep_strain_xy, creep_strain_xz, creep_strain_yx, creep_strain_yy, creep_strain_yz, creep_strain_zx, creep_strain_zy, creep_strain_zz, creep_stress_xx, creep_stress_xy, creep_stress_xz, creep_stress_yx, creep_stress_yy, creep_stress_yz, creep_stress_zx, creep_stress_zy, creep_stress_zz, deformation_gradient_xx, deformation_gradient_xy, deformation_gradient_xz, deformation_gradient_yx, deformation_gradient_yy, deformation_gradient_yz, deformation_gradient_zx, deformation_gradient_zy, deformation_gradient_zz, elastic_strain_xx, elastic_strain_xy, elastic_strain_xz, elastic_strain_yx, elastic_strain_yy, elastic_strain_yz, elastic_strain_zx, elastic_strain_zy, elastic_strain_zz, mechanical_strain_xx, mechanical_strain_xy, mechanical_strain_xz, mechanical_strain_yx, mechanical_strain_yy, mechanical_strain_yz, mechanical_strain_zx, mechanical_strain_zy, mechanical_strain_zz, pk1_stress_xx, pk1_stress_xy, pk1_stress_xz, pk1_stress_yx, pk1_stress_yy, pk1_stress_yz, pk1_stress_zx, pk1_stress_zy, pk1_stress_zz, pk2_stress_xx, pk2_stress_xy, pk2_stress_xz, pk2_stress_yx, pk2_stress_yy, pk2_stress_yz, pk2_stress_zx, pk2_stress_zy, pk2_stress_zz, plastic_strain_xx, plastic_strain_xy, plastic_strain_xz, plastic_strain_yx, plastic_strain_yy, plastic_strain_yz, plastic_strain_zx, plastic_strain_zy, plastic_strain_zz, small_stress_xx, small_stress_xy, small_stress_xz, small_stress_yx, small_stress_yy, small_stress_yz, small_stress_zx, small_stress_zy, small_stress_zz, strain_xx, strain_xy, strain_xz, strain_yx, strain_yy, strain_yz, strain_zx, strain_zy, strain_zz, stress_xx, stress_xy, stress_xz, stress_yx, stress_yy, stress_yz, stress_zx, stress_zy, stress_zz, effective_plastic_strain, effective_creep_strain, firstinv_stress, firstinv_cauchy_stress, firstinv_pk1_stress, firstinv_pk2_stress, firstinv_small_stress, firstinv_strain, hydrostatic_stress, hydrostatic_cauchy_stress, hydrostatic_pk1_stress, hydrostatic_pk2_stress, hydrostatic_small_stress, intensity_stress, intensity_cauchy_stress, intensity_pk1_stress, intensity_pk2_stress, intensity_small_stress, l2norm_mechanical_strain, l2norm_stress, l2norm_cauchy_stress, l2norm_pk1_stress, l2norm_strain, l2norm_elastic_strain, l2norm_plastic_strain, l2norm_creep_strain, max_principal_mechanical_strain, max_principal_stress, max_principal_cauchy_stress, max_principal_pk1_stress, max_principal_pk2_stress, max_principal_small_stress, max_principal_strain, maxshear_stress, maxshear_cauchy_stress, maxshear_pk1_stress, maxshear_pk2_stress, maxshear_small_stress, mid_principal_mechanical_strain, mid_principal_stress, mid_principal_cauchy_stress, mid_principal_pk1_stress, mid_principal_pk2_stress, mid_principal_small_stress, mid_principal_strain, min_principal_mechanical_strain, min_principal_stress, min_principal_cauchy_stress, min_principal_pk1_stress, min_principal_pk2_stress, min_principal_small_stress, min_principal_strain, secondinv_stress, secondinv_cauchy_stress, secondinv_pk1_stress, secondinv_pk2_stress, secondinv_small_stress, secondinv_strain, thirdinv_stress, thirdinv_cauchy_stress, thirdinv_pk1_stress, thirdinv_pk2_stress, thirdinv_small_stress, thirdinv_strain, triaxiality_stress, triaxiality_cauchy_stress, triaxiality_pk1_stress, triaxiality_pk2_stress, triaxiality_small_stress, volumetric_mechanical_strain, volumetric_strain, vonmises_stress, vonmises_cauchy_stress, vonmises_pk1_stress, vonmises_pk2_stress, directional_stress, directional_strain, axial_stress, axial_strain, axial_plastic_strain, axial_creep_strain, axial_elastic_strain, hoop_stress, hoop_strain, hoop_plastic_strain, hoop_creep_strain, hoop_elastic_strain, radial_stress, radial_strain, spherical_hoop_stress, spherical_hoop_strain, spherical_hoop_plastic_strain, spherical_hoop_creep_strain, spherical_hoop_elastic_strain, spherical_radial_stress, spherical_radial_strain

    Controllable:No

    Description:Add scalar quantity output for stress and/or strain

  • inactiveIf specified blocks matching these identifiers will be skipped.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:If specified blocks matching these identifiers will be skipped.

  • incrementalFalseUse incremental or total strain

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Use incremental or total strain

  • initial_plenum_pressureThe initial pressure in the plenum.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The initial pressure in the plenum.

  • orderFIRSTSpecifies the order of the FE shape function to use for this variable.

    Default:FIRST

    C++ Type:MooseEnum

    Options:CONSTANT, FIRST, SECOND, THIRD, FORTH

    Controllable:No

    Description:Specifies the order of the FE shape function to use for this variable.

  • physicsType(s) of physics used on this block.

    C++ Type:MultiMooseEnum

    Options:Mechanics, Thermal

    Controllable:No

    Description:Type(s) of physics used on this block.

  • pitchPitch between rods.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Pitch between rods.

  • poissons_ratioPoisson's ratio for the material.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Poisson's ratio for the material.

  • strainSMALLStrain formulation

    Default:SMALL

    C++ Type:MooseEnum

    Options:SMALL, FINITE

    Controllable:No

    Description:Strain formulation

  • stress_free_temperatureReference temperature for thermal eigenstrain calculation

    C++ Type:std::vector<VariableName>

    Unit:(no unit assumed)

    Controllable:No

    Description:Reference temperature for thermal eigenstrain calculation

  • system_pressure_functionThe function to use for the pressure on the exterior of the cladding.

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:The function to use for the pressure on the exterior of the cladding.

  • temperatureCoupled temperature: Used in multiple models

    C++ Type:std::vector<VariableName>

    Unit:(no unit assumed)

    Controllable:No

    Description:Coupled temperature: Used in multiple models

  • temperature_bc_functionThe function to use for the temperature boundary condition.

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:The function to use for the temperature boundary condition.

  • use_automatic_differentiationFalseFlag to use automatic differentiation (AD) objects when possible

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Flag to use automatic differentiation (AD) objects when possible

  • volumetric_locking_correctionFalseFlag to correct volumetric locking

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Flag to correct volumetric locking

  • youngs_modulusYoung's modulus of the material.

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Young's modulus of the material.

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

Advanced Parameters