NormalFission LWRNuclearMaterials
In working with 'normal' fission operations, it's assumed that there are no unique errors or special conditions to be considered; that is the fission is simply 'normal.' An example case is described in detail below:
There is a recently developed Action Wizard that will create the NuclearMaterials block based on user input. Read through this tutorial, then use it to experiment with the action.
NuclearMaterials Header
As with all NuclearMaterials, building the block for the conditions desired begins by creating the main structure. By default, any input parameters declared here are applied to all sub-blocks under this header (e.g. Fuel, Insulation, and Cladding layers).
[NuclearMaterials]
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
fission_operation = Normal
physics = 'Mechanics Thermal'
initial_temperature = 580.0
strain = FINITE
(examples/NuclearMaterialActions/LWR/Normal/2D_discrete_finiteStrain_nuc_mat_action_integrated/2D_discrete_finiteStrain_nuc_mat_action_integrated.i)Commonly Applied NuclearMaterial InputParameters
fission_operation = Normalshould be selected for the reasons described above. Logically, this implies that while only the fissionable fuel experiences a fission process, the accompanying cladding and or insulation layers will partake in the samefission_operation(i.e. They experience the same resulting physics from the type of fission occurring).physicsdescribes the physical modeling aspects that are created and applied to the blocks under the NuclearMaterials being considered. This parameter saves a lot of time and effort in creating blocks for the user behind the scenes. If this parameter is not used within aNuclearMaterial, then the user must create these blocks themselves. In this case,physics = 'Mechanics Thermal'implies that a TensorMechanicsAction and the necessaryKernels(e.g. HeatConduction, HeatConductionTimeDerivative, NeutronHeatSource) andtemperaturevariables are created to be used for all sub-blocks.strainis simply the strain formulation which is applied to the simulation. This can either be SMALL or FINITE and is dependent on the models used as well as the scale.generate_outputwill automatically create the necessary AuxVariables and AuxKernels necessary for scalar quantity outputs for stresses and/or strains.initial_temperatureis the temperature of the system at the beginning time for the simulation. While it is possible to have different initial temperatures for the sub-blocks, usually it makes more physical sense for everything to start at the same temperature. When this is the case, using initial_temperature under the NuclearMaterials header ensures the same temperature is applied across all sub-blocks. When this is not the case, using the input parameter.localized_initial_temperaturebeneath each sub-block allows unique "local" temperatures for the starting conditions.extra_vector_tagsis the names tags for extra vectors that residual data should be saved into.
UO2 Sub-block
This block must have sub-blocks of materials which are composed of UO2. For example, it is possible to have multiple blocks describing different parts of the fuel assembly with slightly different physical aspects such as geometry or ratios of uranium isotopes fall under the UO2 block. The example shown below only has one such block, and as such it is named [fuel] for consistency.
[NuclearMaterials<<<{"href": "../../syntax/NuclearMaterials/index.html"}>>>]
[UO2<<<{"href": "../../syntax/NuclearMaterials/UO2/index.html"}>>>]
[fuel]
block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to"}>>> = pellet_type_1
uo2_models<<<{"description": "Type(s) of physics models used on this block. The choices are: Burnup Elastic Creep Relocation Swelling ThermalExpansion HighBurnupStructureFormation"}>>> = 'Burnup Elastic Relocation Swelling ThermalExpansion'
stress_free_temperature<<<{"description": "Reference temperature for thermal eigenstrain calculation"}>>> = 295.0
fuel_volume_ratio<<<{"description": "Reduction factor for deviation from right circular cylinder representation of the fuel mesh. The ratio of actual volume to right circular cylinder volume."}>>> = 0.987787
burnup_relocation_stop<<<{"description": "Burnup at which relocation strain stops (in FIMA)"}>>> = 0.03
isotopes<<<{"description": "Fuel isotopes: Gd155 Gd157 U235 U238 Pu239 Pu240 Pu241 Pu242. Number of entries must match number of entries in isotope_fractions."}>>> = 'U235 U238'
isotope_fractions<<<{"description": "The isotope fractions associated with the 'isotopes' input line. Must sum to 1.0."}>>> = '0.05 0.95'
fuel_pin_geometry<<<{"description": "Name of the UserObject that reads the pin geometry from the mesh."}>>> = pin_geometry
rod_ave_lin_pow<<<{"description": "The rod power history function."}>>> = power_history
axial_power_profile<<<{"description": "The axial power peaking function."}>>> = axial_peaking_factors
extra_vector_tags<<<{"description": "The tag names for extra vectors that residual data should be saved into"}>>> = 'ref'
[]
[]
[](examples/NuclearMaterialActions/LWR/Normal/2D_discrete_finiteStrain_nuc_mat_action_integrated/2D_discrete_finiteStrain_nuc_mat_action_integrated.i)UO2 Input parameters
blockThe list of ids of the blocks (subdomain) that the models and kernels will be applied to.uo2_modelsThe current models available forUO2blocks withinNuclearMaterialsare:Burnupcreates the set of auxvariable, auxkernels, and BurnupFunction required to collect the radial average burnup and heavy metal isotope concentrations as calculated by the BurnupFunction.ElasticEither provides the correct elasticty constants for UO2 fuel or calculates the Young's modulus and/or the Poisson's ratio for UO2 fuel using Matpro relations as a function of temperature, burnup, and fuel composition depending on thefission_operationand other models used.CreepComputes the secondary thermal and irradiation creep for UO2 LWR fuel.RelocationAccounts for cracking and relocation of fuel pellet fragments in the radial direction and is necessary for accurate modeling of LWR fuel.SwellingComputes and sums the change in fuel pellet volume due to densification and fission product release.ThermalExpansionComputes an eigenstrain due to thermal expansion for UO2 using the proper thermal expansion coefficients dependent on the type of fission operation.HighBurnupStructureFormationComputes the local volume fraction of high burnup structure (HBS) as a function of burnup and temperature.
stress_free_temperatureReference temperature for thermal eigenstrain calculation.fuel_volume_ratioReduction factor for deviation from right circular cylinder representation of the fuel mesh. The ratio of actual volume to right circular cylinder volume.isotopesDescribes the fuel isotope enrichment.isotope_fractionsRelative ratio of isotope percentages.fuel_pin_geometryName of the UserObject that reads the pin geometry from the mesh.rod_ave_lin_powThe rod power history function.axial_power_profileThe axial power peaking function.burnup_relocation_stopBurnup at which relocation strain stops (in FIMA).
ZirconiumAlloy Sub-block
This block must have sub-blocks of materials which are composed of ZirconiumAlloy. For example, it is possible to have multiple blocks describing different parts of the cladding assembly with slightly different physical aspects such as geometry or modeling strains fall under the ZirconiumAlloy block. The example shown below only has one such block, and as such it is named [clad] for consistency.
blockThe list of ids of the blocks (subdomain) that the models and kernels will be applied to.cladding_modelsThe current models available forZirconiumAlloyblocks withinNuclearMaterialsare:CreepComputes the secondary, thermal secondary, and the irradiation creep for Zircaloy cladding.ElasticEither provides constant elasticity constants for Zircaloy cladding or calculates the Young's modulus and Poisson's ratio for Zircaloy cladding using MATPRO relations as a function of temperature and fast neutron fluence.PlasticityComputes the plastic strain as a function of strain rate for Zircaloy cladding.ZryOxidationIncorporates correlations for Zircaloy cladding oxidation through metal-water reactions. Calculated processes include outer oxide scale thickness growth and oxygen mass gain; the model is to be applied to the cladding waterside boundary. Current version covers LWR Zircaloy cladding only.IrradiationGrowthComputes eigenstrain from irradiation growth in Zircaloy cladding using either the Franklin or ESCORE models.ThermalExpansionComputes an eigenstrain due to thermal expansion for UO2 using the proper thermal expansion coefficients dependent on the type of fission operation.ZrPhaseComputes the volume fraction of beta phase for Zr-based cladding materials as a function of temperature and time.ZryCladdingFailuremodels the failure of Zircaloy-4 cladding due to burst under LOCA conditions.
stress_free_temperatureReference temperature for thermal eigenstrain calculation.
[NuclearMaterials<<<{"href": "../../syntax/NuclearMaterials/index.html"}>>>]
[ZirconiumAlloy<<<{"href": "../../syntax/NuclearMaterials/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 IrradiationGrowth ThermalExpansion'
stress_free_temperature<<<{"description": "Reference temperature for thermal eigenstrain calculation"}>>> = 295.0
extra_vector_tags<<<{"description": "The tag names for extra vectors that residual data should be saved into"}>>> = 'ref'
[]
[]
[](examples/NuclearMaterialActions/LWR/Normal/2D_discrete_finiteStrain_nuc_mat_action_integrated/2D_discrete_finiteStrain_nuc_mat_action_integrated.i)Complete NuclearMaterial Block
An example assessment case already using the methods described can be found in NuclearMaterials. The difference in overall length and complexity reduction is highlighted below.
Complete NuclearMaterials Input File Block
[NuclearMaterials]
fission_operation = Normal
physics = 'Mechanics Thermal'
strain = FINITE
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
initial_temperature = 580.0
extra_vector_tags = 'ref'
[UO2]
[fuel]
block = pellet_type_1
uo2_models = 'Burnup Elastic Relocation Swelling ThermalExpansion'
stress_free_temperature = 580.0
fuel_volume_ratio = 0.987787
isotopes = 'U235 U238'
isotope_fractions = '0.05 0.95'
fuel_pin_geometry = pin_geometry
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.03
[]
[]
[ZirconiumAlloy]
[clad]
block = clad
cladding_models = 'Elastic Creep IrradiationGrowth ThermalExpansion'
stress_free_temperature = 295.0
[]
[]
[]
Complete Set Replaced Blocks from NuclearMaterials
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 0.00324
a_upper = 0.12184
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775
order = CONSTANT
family = MONOMIAL
RPF = RPF
i_enrich = '0.05 0.95 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
diameter = 0.0082
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
gap = 160.0e-6 #diametral gap
burnup_relocation_stop = 0.03
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = 10431.0
[]
[]