- mat_propgas_concentration_release_totalThe name of the material property
Default:gas_concentration_release_total
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:The name of the material property
ElementIntegralFisGasReleasedSifgrs
Reports the fission gas that is released to the plenum in moles. To be used in combination with the Sifgrs model.
Description
The ElementIntegralFisGasReleasedSifgrs postprocessor is used to report the fission gas that is released into the plenum in moles. This postprocessor is used by the PlenumPressure action to calculate the pressure on the fuel and clad due to gases in the plenum.
This class is one of four postprocessors used to return relevant data whenever the Sifgrs fission gas release model is used. The other postprocessors associated with the Sifgrs model are
Example Input Syntax
[Postprocessors<<<{"href": "../../syntax/Postprocessors/index.html"}>>>]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs<<<{"description": "Reports the fission gas that is released to the plenum in moles. To be used in combination with the Sifgrs model.", "href": "ElementIntegralFisGasReleasedSifgrs.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = '3'
[]
[](test/tests/ifba_he_production/doc/fill_gas_xenon.i)Input Parameters
- 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
Optional Parameters
- allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
Default:False
C++ Type:bool
Controllable:No
Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
- execute_onTIMESTEP_ENDThe 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.
Default:TIMESTEP_END
C++ Type:ExecFlagEnum
Options:XFEM_MARK, NONE, INITIAL, LINEAR, NONLINEAR_CONVERGENCE, NONLINEAR, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, FINAL, CUSTOM, TRANSFER
Controllable:No
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.
- execution_order_group0Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
Default:0
C++ Type:int
Controllable:No
Description:Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
- force_postauxFalseForces the UserObject to be executed in POSTAUX
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in POSTAUX
- force_preauxFalseForces the UserObject to be executed in PREAUX
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in PREAUX
- force_preicFalseForces the UserObject to be executed in PREIC during initial setup
Default:False
C++ Type:bool
Controllable:No
Description:Forces the UserObject to be executed in PREIC during initial setup
Execution Scheduling 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.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- outputsVector of output names where you would like to restrict the output of variables(s) associated with this object
C++ Type:std::vector<OutputName>
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Controllable:No
Description:The seed for the master random number generator
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Material Property Retrieval Parameters
Input Files
- (test/tests/sifgrs/uo2/ad_first_stage.i)
- (test/tests/sifgrs/uo2/first_stage_restart2.i)
- (assessment/MOX/JOYO/MK-I/analysis/MK-I_75MW_master_new_bubble_gb_lim.i)
- (test/tests/triso_failure/triso_ipyc_characteristic_strength.i)
- (examples/3D_rodlet_3pellets/smeared/smearedTest3D.i)
- (test/tests/sifgrs/uo2/ad_chromia_doped.i)
- (assessment/MOX/JOYO/MK-II/analysis/MK-II_master_new_bubble_gb_lim.i)
- (examples/multiapp/pin2.i)
- (test/tests/triso_failure/triso_1d_ipyc_failure.i)
- (test/tests/sifgrs/uo2/ad_mechanistic_igmodel.i)
- (test/tests/triso_failure/triso_1d_pd_penetration.i)
- (test/tests/sifgrs/uo2/swelling_porosity.i)
- (assessment/LWR/validation/IFA_681/analysis/rod1/IFA_681_rod1.i)
- (test/tests/sifgrs/uo2/ad_ig_bubble_coarsening.i)
- (test/tests/fuelrodlinevaluesampler/example_problem_smeared_test.i)
- (workshop/bison_example/Smeared.i)
- (test/tests/sifgrs/uo2/ad_scidac_resolution.i)
- (examples/TRISO/full_particle/2D/full_particle.i)
- (test/tests/sifgrs/uo2/percolation.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_1/vitanza.i)
- (assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim_DiffCoeff4_GrainGrowth.i)
- (test/tests/meso_thcond_test/sifgrs_swelling_fissiongas.i)
- (examples/NuclearMaterialActions/LWR/Normal/2D_discrete_finiteStrain_nuc_mat_action_integrated/2D_discrete_finiteStrain_nuc_mat_action_integrated.i)
- (assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_old_bubble_gb_lim.i)
- (assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_10/case_10_1D.i)
- (assessment/MOX/JOYO/B14/PTM010/analysis/b14_ptm010_2DRZ_t.i)
- (test/tests/sifgrs/u3si2/burnup_function.i)
- (test/tests/sifgrs/uo2/scidac_resolution.i)
- (test/tests/sifgrs/uo2/ad_polypole2.i)
- (test/tests/triso_failure/triso_1d_failure_error.i)
- (test/tests/example_problem_test/example_problem_test.i)
- (assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_13/case_13_1D.i)
- (test/tests/sifgrs/uo2/ad_first_stage_restart2.i)
- (assessment/MOX/FFTF/FO-2/L09/analysis/fftf_fo2_L09_master.i)
- (examples/accident_tolerant_fuel/u3si2_zircaloy/u3si2_zircaloy.i)
- (test/tests/sifgrs/u3si2/polypole2.i)
- (test/tests/ifba_he_production/ifba_examp_template.i)
- (test/tests/triso_failure/ad_ipyc_characteristic_strength.i)
- (test/tests/sifgrs/uo2/fast_mox.i)
- (examples/TRISO/full_particle/1D/full_particle_1D.i)
- (test/tests/sifgrs/uo2/first_stage.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-1kW_action.i)
- (test/tests/sifgrs/uo2/athermal_release.i)
- (examples/2D-RZ_rodlet_10pellets/smeared_cracking/SmearedCracking.i)
- (test/tests/sifgrs/uo2/second_stage.i)
- (test/tests/sifgrs/uo2/option_base.i)
- (examples/2D-RZ_rodlet_10pellets/2D_discrete_finiteStrain_mortar/2D_discrete_finiteStrain_mortar.i)
- (test/tests/sifgrs/uo2/ad_swelling_porosity.i)
- (examples/multiapp/pin1.i)
- (test/tests/sifgrs/uo2/ad_diffusion_coefficient.i)
- (test/tests/sifgrs/uo2/first_stage_restart1.i)
- (workshop/bison_example/Discrete.i)
- (examples/3D_rodlet_3pellets/discrete_half_symm/3d_3pellets.i)
- (assessment/MOX/JOYO/B14/PTM002/analysis/b14_ptm002_2DRZ_t.i)
- (examples/accident_tolerant_fuel/uo2_coated_zircaloy/uo2_coated_zircaloy.i)
- (assessment/MOX/JOYO/B14/PTM003/analysis/b14_ptm003_2DRZ_t.i)
- (test/tests/triso_failure/triso_1d_failure.i)
- (test/tests/sifgrs/uo2/ig_bubble_coarsening.i)
- (examples/TRISO/accident_simulation/triso1D_accident.i)
- (test/tests/triso/base_irradiation/triso1D_accident_action.i)
- (examples/2D_plane_strain_fretting_wear/fretting-wear-initial-dyn-exc.i)
- (test/tests/sifgrs/u3si2/option_base.i)
- (examples/3D_rodlet_3pellets/discrete_full/3d_3pellets_mortar.i)
- (examples/fast_mox_sifgrs/input_single_pellet_sifgrs_mox.i)
- (assessment/MOX/JOYO/MK-II/analysis/MK-II_master_old_bubble_gb_lim.i)
- (workshop/bison_example/Discrete_mortar.i)
- (examples/TRISO/accident_simulation/triso2D_accident.i)
- (test/tests/triso/base_irradiation/triso1D_accident.i)
- (test/tests/ifba_he_production/doc/fill_gas_xenon.i)
- (assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim_DiffCoeff4.i)
- (test/tests/sifgrs/uo2/chromia_doped.i)
- (test/tests/triso_failure/triso_1d_layer_stress_strength.i)
- (test/tests/sifgrs/uo2/grain_growth.i)
- (assessment/MOX/JOYO/B14/PTM001/analysis/b14_ptm001_2DRZ_t.i)
- (test/tests/sifgrs/uo2/ad_percolation_xfem.i)
- (test/tests/solid_mechanics/u3si2_eigenstrains/u3si2_vswelling/swelling_mechanistic.i)
- (examples/2D-RZ_rodlet_10pellets/smeared_cracking/ADSmearedCracking.i)
- (assessment/LWR/validation/Separate_effects_FGB/analysis/Baker_TEM/Baker_TEM_Base.i)
- (test/tests/sifgrs/uo2/ad_grain_growth.i)
- (examples/3D_rodlet_3pellets/discrete_quarter_symm/3d_3pellets_mortar.i)
- (test/tests/triso_failure/ad_triso_1d_weibull_probability.i)
- (assessment/LWR/validation/IFA_681/analysis/rod2/IFA_681_rod2.i)
- (examples/2D-RZ_rodlet_10pellets/2D_discrete_finiteStrain_mortar_friction/2D_discrete_finiteStrain_mortar_friction.i)
- (examples/NuclearMaterialActions/LWR/Normal/2D_discrete_finiteStrain_action/2D_discrete_finiteStrain_action_no_burnup.i)
- (assessment/LWR/validation/Separate_effects_FGB/analysis/White_AGR_SEM/White_AGR_SEM_Base.i)
- (examples/3D_rodlet_3pellets/discrete_quarter_symm/3d_3pellets.i)
- (test/tests/sifgrs/u3si2/intergranular.i)
- (test/tests/ifba_he_production/doc/fill_gas_helium.i)
- (assessment/LWR/validation/IFA_677/analysis/IFA_677_Base.i)
- (test/tests/sifgrs/uo2/ad_first_stage_restart1.i)
- (test/tests/triso_failure/triso_1d_weibull_probability.i)
- (assessment/MOX/JOYO/MK-I/analysis/MK-I_50MW_master_new_bubble_gb_lim.i)
- (test/tests/triso_failure/ad_triso_1d_failure.i)
- (test/tests/sifgrs/uo2/ig_bubble_coarsening_disl_density_material.i)
- (examples/accident_tolerant_fuel/uo2_fecral/uo2_fecral.i)
- (examples/TRISO/accident_simulation/triso2D_accident_ad.i)
- (test/tests/ifba_he_production/fill_gas_xenon_w_ifba.i)
- (examples/2D-RZ_rodlet_10pellets/quad8/Quad8.i)
- (test/tests/sifgrs/uo2/ad_fast_mox.i)
- (test/tests/sifgrs/uo2/mechanistic_igmodel.i)
- (examples/2D-RZ_rodlet_10pellets/2D_discrete_finiteStrain/2D_discrete_finiteStrain.i)
- (tools/inputwizard/tests/2D_discrete_finiteStrain_nuc_mat_action_integrated.i)
- (examples/NuclearMaterialActions/LWR/Normal/2D_discrete_finiteStrain_action/2D_discrete_finiteStrain_action.i)
- (assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_9/case_9_1D.i)
- (test/tests/sifgrs/uo2/ad_polypole1.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-2kW.i)
- (assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim.i)
- (test/tests/fuelrodlinevaluesampler/example_problem_smeared_test2.i)
- (examples/2D_plane_strain_fretting_wear/fretting-wear-initial.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT6A/MT6A_1-1kW.i)
- (assessment/LWR/validation/RIA_CABRI_REP_Na4/analysis/REP_Na_4/RIA/REP_Na_4_RIA.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/uo2_relocation/relo_recov_fuel_rod.i)
- (examples/TRISO/accident_simulation/triso2D_accident_mortar.i)
- (test/tests/sifgrs/uo2/ad_percolation.i)
- (assessment/MOX/JOYO/MK-I/analysis/MK-I_75MW_master_old_bubble_gb_lim.i)
- (examples/2D-RZ_rodlet_10pellets/fuel_pin_geometry/fuelpingeo.i)
- (test/tests/sifgrs/uo2/ad_athermal_release.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT6A/MT6A_1-2kW.i)
- (assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim_grainGrowth.i)
- (assessment/MOX/JOYO/MK-I/analysis/MK-I_50MW_master_old_bubble_gb_lim.i)
- (workshop/bison_example/Smeared_mortar.i)
- (test/tests/sifgrs/uo2/diffusion_coefficient.i)
- (test/tests/sifgrs/u3si2/intergranular_ext_fsngas.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-1kW.i)
- (test/tests/sifgrs/uo2/material_input_fission_rate.i)
- (test/tests/triso_failure/sub.i)
- (test/tests/triso_failure/triso_1d_asphericity_failure.i)
- (examples/2D_plane_strain_rod/planestrain.i)
- (assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_11/case_11_1D.i)
- (test/tests/sifgrs/u3si2/intragranular.i)
- (examples/2D-RZ_rodlet_10pellets/smeared_smallStrain/Smeared_smallStrain.i)
- (assessment/LWR/validation/IFA_716/analysis/IFA_716_Base.i)
- (test/tests/meso_thcond_test/sifgrs_swelling_fissiongas_graingrowth.i)
- (test/tests/sifgrs/uo2/percolation_xfem.i)
- (examples/NuclearMaterialActions/TRISO/full_particle_action.i)
- (test/tests/sifgrs/uo2/ad_second_stage.i)
- (test/tests/sifgrs/u3si2/polypole2_ext_fsngas.i)
(test/tests/ifba_he_production/doc/fill_gas_xenon.i)
#
# 2-D RZ One Pellet Test - Using Xenon as fill gas
#
# This test is of a single pellet with cladding and a specified initial
# pressure of Xe fill gas.
#
# This model results in a upper limit for the interior_temp due to the type of
# fill gas used.
#
[GlobalParams]
density = 10431.0 #95% TD (TD = 10980)
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 4
nx_p = 6
nx_c = 3
ny_cu = 3
ny_c = 4
ny_cl = 3
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
displacements = 'disp_x disp_y'
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = '3'
initial_condition = 5e-6 # must be the same as the initial value in Sifgr
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = '3'
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
# CoolantChannel requires this to have units while axial_peaking_factors must be normalized.
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 20e3 # 20 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[q] # this is for fuel_relocation
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[]
[SolidMechanics]
[solid]
temperature = temp
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_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
#convert W/m from power profile to fission/m**3-s
#calculated as 1/(energy_per_fission*area)
#using energy_per_fission = 3.2e-11, consistent with 200 MeV/fission
value = 5.3548e+14
fission_rate_function = q
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
# If you divide flux/power, you get this constant factor
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = '3'
variable = gas_swell
property = deltav_v0_bd
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = fis_gas_released
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_gas_types = Xe
initial_fractions = 1
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
# pin entire clad bottom in y
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
# pin fuel bottom in y
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
# pin fuel axis in x and z
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
startup_time = 0.0
material_input = fis_gas_released
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
displacements = 'disp_x disp_y'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_swelling]
type = VSwellingUO2
block = '3'
temperature = temp
burnup = burnup
gas_swelling_type = sifgrs
[]
[fuel_solid_mechanics_elastic]
type = Elastic
block = '3'
temperature = temp
youngs_modulus = 2.e11
poissons_ratio = 0.345
thermal_expansion = 10.0e-6
dep_matl_props = deltav_v0_bd
[]
[fission_gas_release]
type = Sifgrs
block = '3'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_solid_mechanics]
type = SolidModel
block = 1
temperature = temp
youngs_modulus = 7.5e10
poissons_ratio = 0.3
thermal_expansion = 5.0e-6
constitutive_model = clad_plasticity
[]
[clad_growth]
type = IrradiationGrowthZr4
block = 1
fast_neutron_fluence = fast_neutron_fluence
growth_direction = 1
[]
[clad_plasticity]
type = IsotropicPlasticity
block = 1
temperature = temp
yield_stress = 550e6
hardening_constant = 2.5e9
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 25.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x'
off_diag_column = 'disp_x'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 2.0e7 # Stop run before contact between pellet and clad occurs
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e5 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01 # change: length of fuel stack in meters (1 pellet height)
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[out]
type = CSV
delimiter = ' '
[]
[]
(test/tests/sifgrs/uo2/ad_first_stage.i)
# @Requirement F2.40
# This test is for evaluating the first stage (i.e., the intra-granular diffusion calculation) of the Sifgrs fission gas behavior model.
# The first stage is isolated by setting the fractional bubble coverage at grain boundary saturation to zero (saturation_coverage = 0). Under this condition (i.e. gas reaching the grain boundaries goes instantaneously to the plenum), the ratio of fission gas released to fission gas generated calculated by the model should compare very closely with the analytical expression for fractional fission gas release fraction from the grains published by Speight (Nuclear Science and Engineering 37, 180, 1969). The Speight equation for fission gas release fraction (released/produced) is
#
# parameters:
# n and no are summation integers
# a = grain radius in m
# pi = the number pi 3.14159...
# D = effective diffusion coefficient in m^2/s where D includes the effects of intragranular trapping and resolution (see White, JNM 118, 1, 1983, and the
# fgr_diffusion_coefficient_test in BISON for a description)
# t = time in seconds
#
# 6*a^2
# f = 1 - sum(n=1, to no) ---------------- * {1 - exp -[D*n^2*pi^2*t/a^2]}
# pi^4 * D*t*n^4
#
# For no = 1, D = 4.123e-19 m^2/s, a = 1e-5 m, t = 1e6 s, f = 0.596.
# For no = 50, and the same parameters defined above, f = 0.1388
#
# With the output from this test, if one calculates fission gas released / fission gas produced at
# t = 1.e+06, the result should be 0.1032, which compares well with the analytical solution from Speight.
#
# See also the sheet sifgrs_first_stage of the attached excel file (regression_tests_sifgrs.xlsx).
# Check of fission gas produced
# beta = rate of gas production per unit volume by fission
# beta * time * volume = gas produced
# The following parameters are used to calculate beta
#
# t = time in seconds = 5e7
# Avogadros number = 6.023e23 atoms/mol
# FY = fractional yield = fraction of fission gas atoms per fission = 0.3017 atoms/fission
# Y = yield = FY/Avogadros number = atoms/fission / atoms/mol to give mols/fission
# F = fission rate = fissions/m^3*s = 2.5e19
# beta = F*Y = fissions/m^3s * mols/fission = mols/m^3*s
# gas produced = beta * time * volume
# For this test problem, volume = (0.01m)^3 = 1e-6m^3 = volume of single finite element in this problem
#
# Y = 0.3017/6.023e23 = 5.0091e-25 mol/fission
# beta = 2.5e19*5.009e-25 = 1.25e-5 mol/m^3s
# gas produced = 1.25e-5*5e7*1e-6 = 6.26e-4 mols
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[FRA]
type = ADMaterialRealAux
variable = fract_FGR_analytical
property = fract_FGR_analytical
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 1
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
testing_output = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 1
[]
[]
[Outputs]
[out]
type = Exodus
[]
[csv]
type = CSV
[]
[]
(test/tests/sifgrs/uo2/first_stage_restart2.i)
# This test is for evaluating the first stage (i.e., the intra-granular diffusion calculation) of the Sifgrs fission gas behavior model.
# The first stage is isolated by setting the fractional bubble coverage at grain boundary saturation to zero (saturation_coverage = 0). Under this condition (i.e. gas reaching the grain boundaries goes instantaneously to the plenum), the ratio of fission gas released to fission gas generated calculated by the model should compare very closely with the analytical expression for fractional fission gas release fraction from the grains published by Speight (Nuclear Science and Engineering 37, 180, 1969). The Speight equation for fission gas release fraction (released/produced) is
#
# parameters:
# n and no are summation integers
# a = grain radius in m
# pi = the number pi 3.14159...
# D = effective diffusion coefficient in m^2/s where D includes the effects of intragranular trapping and resolution (see White, JNM 118, 1, 1983, and the
# fgr_diffusion_coefficient_test in BISON for a description)
# t = time in seconds
#
# 6*a^2
# f = 1 - sum(n=1, to no) ---------------- * {1 - exp -[D*n^2*pi^2*t/a^2]}
# pi^4 * D*t*n^4
#
# For no = 1, D = 4.123e-19 m^2/s, a = 1e-5 m, t = 1e6 s, f = 0.596.
# For no = 50, and the same parameters defined above, f = 0.1388
#
# With the output from this test, if one calculates fission gas released / fission gas produced at
# t = 1.e+06, the result should be 0.1032, which compares well with the analytical solution from Speight.
#
# See also the sheet sifgrs_first_stage of the attached excel file (regression_tests_sifgrs.xlsx).
# Check of fission gas produced
# beta = rate of gas production per unit volume by fission
# beta * time * volume = gas produced
# The following parameters are used to calculate beta
#
# t = time in seconds = 5e7
# Avogadros number = 6.023e23 atoms/mol
# FY = fractional yield = fraction of fission gas atoms per fission = 0.3017 atoms/fission
# Y = yield = FY/Avogadros number = atoms/fission / atoms/mol to give mols/fission
# F = fission rate = fissions/m^3*s = 2.5e19
# beta = F*Y = fissions/m^3s * mols/fission = mols/m^3*s
# gas produced = beta * time * volume
# For this test problem, volume = (0.01m)^3 = 1e-6m^3 = volume of single finite element in this problem
#
# Y = 0.3017/6.023e23 = 5.0091e-25 mol/fission
# beta = 2.5e19*5.009e-25 = 1.25e-5 mol/m^3s
# gas produced = 1.25e-5*5e7*1e-6 = 6.26e-4 mols
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = timestep_begin
[]
[FRA]
type = MaterialRealAux
variable = fract_FGR_analytical
property = fract_FGR_analytical
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
block = 1
saturation_coverage = 0
temperature = T
fission_rate = fission_rate
testing_output = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 28e6
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[]
[Outputs]
file_base = first_stage_out
exodus = true
[]
[Problem]
restart_file_base = first_stage_restart1_checkpoint_cp/0028
# Initial condition for T overrides the restart
allow_initial_conditions_with_restart = true
[]
(assessment/MOX/JOYO/MK-I/analysis/MK-I_75MW_master_new_bubble_gb_lim.i)
initial_fuel_density = 10836.8
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.065
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.6
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000100
clad_thickness = 0.00035
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.599
elem_type = QUAD8
nx_c = 4
ny_c = 200
nx_p = 20
ny_p = 200
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = '0 70000 25000000'
y = '0 38974.7 38974.7'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 70000 25000000'
y = '0 1.9e+19 1.9e+19'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0 0.071 0.146 0.221 0.296 0.37 0.443 0.566'
y = '0 25000000'
z = '0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672 0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = '0 70000 25000000'
y = '0 32000 32000'
[]
[clad_surface_temp]
type = PiecewiseBilinear
x = '0 0.071 0.146 0.221 0.296 0.37 0.443 0.566'
y = '0 25000000'
z = '295 295 295 295 295 295 295 295 593.58 606.36 619.13 630.26 640.87 651.76 662.67 673.67'
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[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
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.065
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp_clad_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_surface_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 101325
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 300000
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10836.8
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
diff_coeff_option = TURNBULL_D1_4D2_4D3
fission_rate = fission_rate
grain_radius_const = 8.01e-6 #I'm keeping the grain radius const because the grain growth in MOX is probably different due to high Temp
bubble_gb_limit = 1.0e+11
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-5
fixed_point_rel_tol = 1e-5
fixed_point_max_its = 1
l_max_its = 70
l_tol = 8e-3
nl_max_its = 70
nl_rel_tol = 1e-5
nl_abs_tol = 1e-5
start_time = 0
n_startup_steps = 1
end_time = 25000000
dtmax = 1e6
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 5000
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.6 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = MK-I_75MW_sub_new_bubble_gb_lim.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'temp disp_x disp_y'
[]
(test/tests/triso_failure/triso_ipyc_characteristic_strength.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DFiveLayerMeshGenerator
elem_type = EDGE3
kernel_radius = 2.485e-4
buffer_thickness = 9.4e-5
IPyC_thickness = 4.1e-5
SiC_thickness = 3.6e-5
OPyC_thickness = 4.0e-5
kernel_mesh_density = 6
buffer_mesh_density = 6
IPyC_mesh_density = 6
SiC_mesh_density = 8
OPyC_mesh_density = 6
[]
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19 # units of fissions/m**3
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '100 100'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat]
type = HeatConduction
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = DirichletBC
variable = temp
boundary = exterior
value = 1346.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
# apply gas pressure on buffer and IPyC boundaries
[PlenumPressure]
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[max_principal_stress]
type = RankTwoInvariant
property_name = max_principal_stress
rank_two_tensor = stress
invariant = MaxPrincipal
[]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temp
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_temp]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength_SiC]
type = GenericConstantMaterial
prop_values = '9640000'
block = SiC
prop_names = 'characteristic_strength'
[]
[characteristic_strength_PyC]
type = PyCCharacteristicStrength
temperature = temp
X = 1.02
flux_conversion_factor = 0.85
block = 'IPyC OPyC'
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temp
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temp
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = WeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
[]
[failure_indicator_SiC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_SiC
[]
[strength_IPyC]
type = WeibullEffectiveMeanStrength
block = IPyC
weibull_modulus = 6
[]
[failure_indicator_IPyC]
type = WeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_IPyC
[]
[strength_OPyC]
type = WeibullEffectiveMeanStrength
block = OPyC
weibull_modulus = 6
[]
[failure_indicator_OPyC]
type = WeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_OPyC
[]
[failure_indicator_SiC_crackedIPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
[]
[failure_indicator_SiC_crackedOPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
[]
[triso_failure]
type = TRISOFailureEvaluation
IPyC_failure = failure_indicator_IPyC
OPyC_failure = failure_indicator_OPyC
SiC_failure = failure_indicator_SiC
SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
SiC_failure_crackedOPyC = failure_indicator_SiC_crackedOPyC
[]
[characteristic_strength]
type = ElementExtremeMaterialProperty
mat_prop = characteristic_strength
block = IPyC
value_type = max
[]
[flence]
type = ElementExtremeMaterialProperty
mat_prop = fast_neutron_fluence
block = IPyC
value_type = max
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
[]
(examples/3D_rodlet_3pellets/smeared/smearedTest3D.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} # initial fuel density 95.0% of theoretical (10980 kg/m3)
displacements = 'disp_x disp_y disp_z'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
[]
[Mesh]
patch_size = 20
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = smearedTest3.e
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
[]
[Variables]
[temp]
initial_condition = 580
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[hoop_inelastic_strain]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[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
block = pellet_type_1
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_strain fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_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 creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[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 = 2.49e-3
a_upper = 2.621e-2
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[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
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[hoop_inelastic_strain]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = hoop_inelastic_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
penalty = 1e14
normalize_penalty = true
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 1e-4
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_z_all]
type = DirichletBC
variable = disp_z
boundary = 13
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = interior_temp
volume = gas_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[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
diametral_gap =160e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.02
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup_function = burnup
temperature = temp
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_strain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[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 = 580.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
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = ' lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-5
nl_abs_tol = 1e-10
start_time = -200
end_time = 3.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
optimal_iterations = 15
iteration_window = 3
linear_iteration_ratio = 100
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[interior_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = exodus
[]
[pellet_volume]
type = InternalVolume
boundary = 8
outputs = exodus
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
[]
[fission_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fissionrate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_total_power] # should be 1/4 of the rod_input_power as we are using in quarter symmetry
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.02372
[]
[average_fission_rate]
type = AverageFissionRate
rod_ave_lin_pow = power_history
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'fission_gas_released plenum_pressure interior_temp gas_volume'
[]
[]
(test/tests/sifgrs/uo2/ad_chromia_doped.i)
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
x = '0. 2.2e7'
y = '300. 2500.'
scale_factor = 1
[]
[Fiss_func]
type = PiecewiseLinear
x = '0 2.2e7'
y = '1.e19 1.e19'
[]
[]
[Variables]
[T]
initial_condition = 300
[]
[]
[AuxVariables]
[fission_rate]
initial_condition = 1.e19
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_end'
[]
[eff_diffusion_coefficient]
type = ADMaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = 'initial timestep_end'
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 1
temperature = T
fission_rate = fission_rate
skip_bdr_model = true
eff_diff_coeff_option = BULK
diff_coeff_option = TURNBULL_D1_4D2_4D3
doping_type = CR2O3_DOPED
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
start_time = 0.0
num_steps = 22
dt = 1e6
[]
[Postprocessors]
[temperature]
type = FunctionValuePostprocessor
function = Temp_func
execute_on = 'initial timestep_end'
[]
[fission_rate]
type = FunctionValuePostprocessor
function = Fiss_func
execute_on = 'initial timestep_end'
[]
[diffusion_coefficient]
type = ElementalVariableValue
elementid = 0
variable = eff_diff_coeff
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
execute_on = 'initial timestep_end'
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[]
[Outputs]
exodus = true
[console]
type = Console
output_linear = true
max_rows = 23
[]
[]
(assessment/MOX/JOYO/MK-II/analysis/MK-II_master_new_bubble_gb_lim.i)
initial_fuel_density = 10920.4
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.07
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.55
pellet_outer_radius = 0.002315
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000085
clad_thickness = 0.00035
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.549
elem_type = QUAD8
nx_c = 4
ny_c = 100
nx_p = 10
ny_p = 100
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = '0 70000 12970000'
y = '0 48827.8 48827.8'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 70000 12970000'
y = '0 2.6e+19 2.6e+19'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0 0.065 0.134 0.202 0.271 0.339 0.406 0.519'
y = '0 12970000'
z = '0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672 0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = '0 70000 12970000'
y = '0 40000 40000'
[]
[clad_surface_temp]
type = PiecewiseBilinear
x = '0 0.065 0.134 0.202 0.271 0.339 0.406 0.519'
y = '0 12970000'
z = '295 295 295 295 295 295 295 295 416.36 422.49 428.63 434.27 439.36 444.71 450.07 455.48'
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[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
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.07
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.00463
execute_on = timestep_begin
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp_clad_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_surface_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 101325
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 300000
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10920.4
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
diff_coeff_option = TURNBULL_D1_4D2_4D3
fission_rate = fission_rate
grain_radius_const = 8.01e-6
bubble_gb_limit = 1.0e+11
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-3
fixed_point_rel_tol = 1e-3
fixed_point_max_its = 1
l_max_its = 70
l_tol = 8e-3
nl_max_its = 70
nl_rel_tol = 1e-3
nl_abs_tol = 1e-3
start_time = 0
n_startup_steps = 1
end_time = 12970000
dtmax = 5e5
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 5000
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.55 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = MK-II_sub_new_bubble_gb_lim.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'temp disp_x disp_y'
[]
(examples/multiapp/pin2.i)
## In this example the multiapp system is called to run another BISON simulation.
## (input1.i calls input2.i) An application of this might be multiple fuel pins
## in an assembly. This example also demonstrates the internal mesh maker.
initial_fuel_density = 10200
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
a_lower = 0.06951
a_upper = 3.72711
initial_porosity = 0.04
[]
# ==================================================== #
# Mesh (and Geometry, internally-meshed)
# ==================================================== #
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
clad_thickness = 0.0005
pellet_outer_radius = 0.0041
clad_bot_gap_height = 0.00152
clad_top_gap_height = 0.16
pellet_quantity = 1
pellet_height = 3.6576
clad_gap_width = 8.0e-05
bottom_clad_height = 0.0167
top_clad_height = 0.0167
nx_p = 6 # number of radial elements in the fuel
ny_p = 48 # number of axial elements in the fuel
nx_c = 3 # number of elements in the clad thickness
ny_c = 48 # number of elements in the axially in the clad
ny_cu = 1
ny_cl = 1
intervals = '0.03866 0.08211 0.08211 0.08211 0.08212 0.08211 0.08211 0.08211 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.079212 0.079212 0.079212 0.079212 0.079212'
elem_type = QUAD4
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 10
patch_update_strategy = auto
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 493
[]
# ==================================================== #
# Dimensions and Primary Variables
# ==================================================== #
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 3.000000e+02
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
# ==================================================== #
# Auxiliary Variables
# ==================================================== #
[AuxVariables]
# ================================================== #
# Nodal Quantities
# ================================================== #
[htcl]
initial_condition = 500.0
[]
[htcv]
initial_condition = 0.0
[]
[Tl]
initial_condition = 565.0
[]
[Tv]
initial_condition = 565.0
[]
[burnup]
block = 3
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 5.240000e-06
[]
# ================================================== #
# Constant Monomial Quantities (Non-Mechanics)
# ================================================== #
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[axial_fission_rate]
order = CONSTANT
family = MONOMIAL
[]
[axial_burnup]
order = CONSTANT
family = MONOMIAL
[]
[axial_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.04
[]
[]
# ==================================================== #
# Time- and Space-Dependent Source and BCs
# ==================================================== #
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
x = '-100 0 5000'
y = '0 0 25000'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_temperature]
type = PiecewiseLinear
x = '-100 0'
y = '293 565'
axis = y
[]
[coolant_pressure_ramp]
# used in coolantPressure BC
type = PiecewiseLinear
scale_factor = 1
x = '0 10000.0'
y = '0 1.0'
[]
[]
# ==================================================== #
# Burnup Equation Set
# ==================================================== #
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
isotopes = 'U235 U238'
isotope_fractions = '3.100e-02 9.690e-01'
RPF = RPF
[]
[]
# ==================================================== #
# Primary Kernels used in Heat Transfer
# ==================================================== #
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
extra_vector_tags = 'ref'
block = 3
[]
[]
[AuxKernels]
# ================================================== #
# Pre-Defined Types
# ================================================== #
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
factor = 1.27e+14 # (n/m2-s per W/m)
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = linear
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
execute_on = linear
[]
# ================================================== #
# Other General Types
# ================================================== #
[axial_burnup]
type = SpatialUserObjectAux
block = 3
variable = axial_burnup
user_object = axial_burnup
execute_on = timestep_begin
[]
[axial_temperature]
type = SpatialUserObjectAux
block = 3
variable = axial_temperature
user_object = axial_temperature
execute_on = timestep_begin
[]
[]
# ==================================================== #
# Mechanical and Thermal Contact
# ==================================================== #
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
normal_smoothing_distance = 0.1
model = frictionless
formulation = Kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.200000e+00
roughness_primary = 1.8e-06
roughness_secondary = 8e-07
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 0.0001
normal_smoothing_distance = 0.1
order = FIRST
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[convective_clad_surface_bottom]
type = ConvectiveFluxBC
boundary = '1 2 3'
variable = temp
rate = 38200.0 #convection coefficient (h)
initial = 565.0
final = 585.0
duration = 1.0e4 #duration of initial power ramp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.55132e+07
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 1.99948e+06
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
# ==================================================== #
# Specification of Material Properties
# ==================================================== #
[Materials]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
diameter = 0.008192
diametral_gap =0.000168
# Average burnup at which fuel comes into contact with clad at 25kW/m
burnup_relocation_stop = 0.0315
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10200.0
eigenstrain_name = fuel_volumetric_strain
total_densification = 0.01
[]
[fission_gas_release]
type = UO2Sifgrs
axial_power_profile = axial_peaking_factors
block = 3
burnup = burnup
fission_rate = fission_rate
hydrostatic_stress = hydrostatic_stress
grain_radius = grain_radius
pellet_brittle_zone = pbz
pellet_id = pellet_id
rod_ave_lin_pow = linear_heat_rate_profile
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
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 = 1
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 7833
[]
[]
# ==================================================== #
# User Objects for Output Processing
# ==================================================== #
[UserObjects]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.0041
number_pellets = 1
execute_on = linear
[]
[averagefissionrate]
type = LayeredAverage
block = 3
variable = fission_rate
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[average_temp]
type = LayeredAverage
block = 3
variable = temp
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[averagebu]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[casl_average_fission_rate]
variable = fission_rate
type = LayeredAverage
block = 3
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[surface_temp]
type = LayeredSideAverage
boundary = 2
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[axial_temperature]
type = LayeredAverage
block = 3
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[axial_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[integral_temperature]
type = LayeredAverage
block = 3
variable = temp
direction = y
num_layers = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
execute_on = timestep_begin
[]
[average]
type = LayeredAverage
block = 3
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[axial_surface_temperature]
type = LayeredSideAverage
boundary = 2
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[rod_avg_fast_fluence]
type = LayeredSideAverage
boundary = 2
variable = fast_neutron_fluence
direction = y
num_layers = 1
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[casl_clad_surface_heat_flux]
type = LayeredSideDiffusiveFluxAverage
variable = temp
boundary = 2
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
diffusivity = thermal_conductivity
execute_on = timestep_begin
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 293
[]
[]
# ==================================================== #
# Solver Options
# ==================================================== #
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
verbose = true
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
# ================================================== #
# Time Step Control
# ================================================== #
start_time = -100
end_time = 5e6
dtmin = 0.1
dtmax = 1e6
dt = 10
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
optimal_iterations = 1000
time_t = '0 1.0e4 53200 1.0e5'
time_dt = '1.0e3 1.0e3 1.0e3 1.0e5'
[]
[]
[Postprocessors]
# ================================================== #
# Required for Fission Gas Release Models
# ================================================== #
[ave_temp_interior]
# used to compute temperature of plenum
type = SideAverageValue
boundary = 9
variable = temp
outputs = exodus
execute_on = 'initial linear'
[]
[fission_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[gas_volume]
type = InternalVolume
boundary = 9
outputs = exodus
execute_on = 'initial linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[_dt]
type = TimestepSize
execute_on = timestep_end
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
# ==================================================== #
# Location and format of output
# ==================================================== #
[Outputs]
perf_graph = true
exodus = true
file_base = pin2_output
time_step_interval = 1
[console]
type = Console
max_rows = 25
output_linear = true
[]
[]
(test/tests/triso_failure/triso_1d_ipyc_failure.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DFiveLayerMeshGenerator
elem_type = EDGE3
kernel_radius = 2.485e-4
buffer_thickness = 9.4e-5
IPyC_thickness = 4.1e-5
SiC_thickness = 3.6e-5
OPyC_thickness = 4.0e-5
kernel_mesh_density = 6
buffer_mesh_density = 6
IPyC_mesh_density = 6
SiC_mesh_density = 8
OPyC_mesh_density = 6
[]
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19 # units of fissions/m**3
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '100 100'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat]
type = HeatConduction
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
# contact_pressure_input = 10e6
# quadrature = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = DirichletBC
variable = temp
boundary = exterior
value = 1346.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
# apply gas pressure on buffer and IPyC boundaries
[PlenumPressure]
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[max_principal_stress]
type = RankTwoInvariant
property_name = max_principal_stress
rank_two_tensor = stress
invariant = MaxPrincipal
[]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temp
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_temp]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength_SiC]
type = GenericConstantMaterial
prop_values = '9640000'
prop_names = 'characteristic_strength'
block = SiC
[]
[characteristic_strength_PyC]
type = GenericConstantMaterial
prop_values = '964000'
prop_names = 'characteristic_strength'
block = 'IPyC OPyC'
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temp
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temp
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = WeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
[]
[failure_indicator_SiC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_SiC
[]
[strength_IPyC]
type = WeibullEffectiveMeanStrength
block = IPyC
weibull_modulus = 6
[]
[failure_indicator_IPyC]
type = WeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_IPyC
[]
[strength_OPyC]
type = WeibullEffectiveMeanStrength
block = OPyC
weibull_modulus = 6
[]
[failure_indicator_OPyC]
type = WeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_OPyC
[]
[failure_indicator_SiC_crackedIPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
[]
[failure_indicator_SiC_crackedOPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
[]
[triso_failure]
type = TRISOFailureEvaluation
IPyC_failure = failure_indicator_IPyC
OPyC_failure = failure_indicator_OPyC
SiC_failure = failure_indicator_SiC
SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
SiC_failure_crackedOPyC = failure_indicator_SiC_crackedOPyC
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
perf_graph = true
[]
(test/tests/sifgrs/uo2/ad_mechanistic_igmodel.i)
# @Requirement F2.40
# This test is for evaluating the mechanistic model for the intra-granular fission gas behavior and bubble evolution in the Sifgrs fission gas model.
#
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1273'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
initial_condition = 1273
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[bbl_cnc]
type = ADMaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
execute_on = 'TIMESTEP_END'
[]
[rad_bbl]
type = ADMaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
execute_on = 'TIMESTEP_END'
[]
[gascnc_bbl]
type = ADMaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
grain_radius_const = 5.e-6
ig_bubble_model = NUCLEATION_RESOLUTION
initial_porosity = 0.0
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 10
dt = 19800.
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 0
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 0
[]
[]
[Outputs]
exodus = true
[]
(test/tests/triso_failure/triso_1d_pd_penetration.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DFiveLayerMeshGenerator
elem_type = EDGE3
kernel_radius = 2.485e-4
buffer_thickness = 9.4e-5
IPyC_thickness = 4.1e-5
SiC_thickness = 3.6e-5
OPyC_thickness = 4.0e-5
kernel_mesh_density = 6
buffer_mesh_density = 6
IPyC_mesh_density = 6
SiC_mesh_density = 8
OPyC_mesh_density = 6
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1346.0
[]
[]
[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
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19 # units of fissions/m**3
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '100 100'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1346.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
# apply gas pressure on buffer and IPyC boundaries
[PlenumPressure]
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[max_principal_stress]
type = RankTwoInvariant
property_name = max_principal_stress
rank_two_tensor = stress
invariant = MaxPrincipal
[]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_temp]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength_SiC]
type = GenericConstantMaterial
prop_values = '9640000'
prop_names = 'characteristic_strength'
block = SiC
[]
[characteristic_strength_PyC]
type = GenericConstantMaterial
prop_values = '964000'
prop_names = 'characteristic_strength'
block = 'IPyC OPyC'
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 2
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = WeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
[]
[failure_indicator_SiC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_SiC
[]
[strength_IPyC]
type = WeibullEffectiveMeanStrength
block = IPyC
weibull_modulus = 6
[]
[failure_indicator_IPyC]
type = WeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_IPyC
[]
[strength_OPyC]
type = WeibullEffectiveMeanStrength
block = OPyC
weibull_modulus = 6
[]
[failure_indicator_OPyC]
type = WeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_OPyC
[]
[pd_penetration]
type = PdPenetration
boundary = SiC_inner_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
[failure_indicator_pd_penetration]
type = PdPenetrationFailureIndicator
triso_geometry = particle_geometry
pd_penetration = pd_penetration
[]
[failure_indicator_SiC_crackedIPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
[]
[failure_indicator_SiC_crackedOPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
[]
[triso_failure]
type = TRISOFailureEvaluation
IPyC_failure = failure_indicator_IPyC
OPyC_failure = failure_indicator_OPyC
SiC_failure = failure_indicator_SiC
SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
SiC_failure_crackedOPyC = failure_indicator_SiC_crackedOPyC
SiC_failure_pd_penetration = failure_indicator_pd_penetration
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
perf_graph = true
[]
(test/tests/sifgrs/uo2/swelling_porosity.i)
# This test is for the fuel swelling and porosity computation in the Sifgrs fission gas behavior model for UO2.
# As complementary to the fission gas release process, the fission gas swelling is related to gas retention in the fuel in the form of bubbles. Through a direct description of the gas bubble development, the fission gas swelling and release are modeled as inherently coupled processes, on a physical basis. Only the fission gas swelling due to grain-face bubbles is considered.
# In a comprehensive treatment of fission gas release and fuel swelling, Sifgrs also incorporates empirical models for the swelling due to solid fission products and the fuel densification.
# Moreover, the different contributions to fuel porosity, namely, those due to fabrication pores, gas bubbles (thus associated with fission gas swelling) , and sintering (densification), are computed consistently with the swelling calculations. Then, the fuel total porosity in each mesh location can be tracked (auxkernel PorosityAuxUO2), and considered in the computation of other relevant material properties like the fuel thermal conductivity (material model UO2Thermal).
# This test aims at demonstrating the above model capabilities. The considered case involves a single-element cubic domain, constant temperature (1400 K) and fission rate (1e19 f/(m**3s)), and a irradiation time of 1e8 s. The Sifgrs model is adopted for calculating the fission gas release and fuel swelling. Starting from a typical as-fabricated value of 5%, the fuel porosity evolves consistently with the swelling. The fuel thermal conductivity is calculated as coupled with porosity, which allows taking into account the conductivity degradation due to progressive increase of gaseous porosity (see also the attached file regression_tests_sifgrs.xlsx).
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = cube_111.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1400.'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[temp]
initial_condition = 1400.
[]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.05
[]
[density]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_bubble_GB]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_sl]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_dn]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_swe]
order = CONSTANT
family = MONOMIAL
[]
[fabrication_porosity]
order = CONSTANT
family = MONOMIAL
[]
[gaseous_porosity]
order = CONSTANT
family = MONOMIAL
[]
[sintering_porosity]
order = CONSTANT
family = MONOMIAL
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_volumetric_strain'
volumetric_locking_correction = false
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[AuxKernels]
[frate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[brnp]
type = BurnupAux
variable = burnup
fission_rate = fission_rate
density = 10417.
execute_on = 'initial timestep_begin'
[]
[por]
type = PorosityAuxUO2
variable = porosity
execute_on = 'initial linear'
[]
[rho]
type = MaterialRealAux
variable = density
property = density
execute_on = 'initial linear'
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bubble_GB
property = deltav_v0_bubble_GB
[]
[dvv0sl]
type = MaterialRealAux
variable = deltav_v0_sl
property = solid_swelling
[]
[dvv0dn]
type = MaterialRealAux
variable = deltav_v0_dn
property = densification
[]
[dvv0swe]
type = MaterialRealAux
variable = deltav_v0_swe
property = volumetric_swelling_strain
[]
[fabpor]
type = MaterialRealAux
variable = fabrication_porosity
property = fabrication_porosity
execute_on = 'initial linear'
[]
[gaspor]
type = MaterialRealAux
variable = gaseous_porosity
property = gaseous_porosity
[]
[sinpor]
type = MaterialRealAux
variable = sintering_porosity
property = sintering_porosity
[]
[thcond]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
execute_on = 'initial linear'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = temp
function = Temp_func
boundary = 1
[]
[x_disp]
type = DirichletBC
variable = disp_x
value = 0
boundary = 1
[]
[y_disp]
type = DirichletBC
variable = disp_y
value = 0
boundary = 2
[]
[z_disp]
type = DirichletBC
variable = disp_z
value = 0
boundary = 3
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
temperature = temp
burnup = burnup
initial_porosity = 0.05
porosity = porosity
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
temperature = temp
burnup = burnup
initial_fuel_density = 10417.0
eigenstrain_name = fuel_volumetric_strain
[]
[density]
type = StrainAdjustedDensity
strain_free_density = 10417.0
[]
[fission_gas_release_and_swelling]
type = UO2Sifgrs
temperature = temp
fission_rate = fission_rate
burnup = burnup
initial_porosity = 0.05
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1.e-04
nl_abs_tol = 1.e-05
nl_rel_tol = 1.e-05
start_time = 0.
num_steps = 100
dt = 1.e+06
end_time = 1.e+08
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[]
[Outputs]
[out]
type = Exodus
[]
[]
(assessment/LWR/validation/IFA_681/analysis/rod1/IFA_681_rod1.i)
# Halden test IFA-681, rod 1
initial_fuel_density = 10478
[GlobalParams]
density = ${initial_fuel_density}. # 95.6% 10960
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.28451e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = 'mesh_ifa681r1_093_quad4.e'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.
[]
[]
[Functions]
[average_lhr]
type = PiecewiseLinear
data_file = 'alhr_history_ifa681r1.csv'
scale_factor = 1.e+03
format = columns
[]
[axial_scaling_lhr]
type = PiecewiseBilinear
data_file = 'peakfact_lhr_ifa681r1.csv'
axis = 1
[]
[radial_power_profile]
type = PiecewiseBilinear
data_file = 'radial_power_fact_helios_ifa681r1.csv'
axis = 0
[]
[coolant_inlet_temp]
type = PiecewiseLinear
data_file = 'coolant_inlet_temp_ifa681r1.csv'
format = columns
[]
[fast_flux]
type = PiecewiseLinear
data_file = 'fast_nflux_ifa681r1.csv'
scale_factor = 1.e+17
format = columns
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200. 0.'
y = ' 0. 1.'
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
initial_condition = 8.5e-06
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[sat_coverage]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 'clad'
function = fast_flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = 'clad'
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_3 pellet_type_4'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fuel_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[oxi_thickness]
type = MaterialRealAux
variable = oxide_thickness
property = oxide_scale_thickness
boundary = 2
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
[]
[stcvrg]
type = MaterialRealAux
variable = sat_coverage
property = sat_coverage
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel_pellets]
add_variables = false
block = 'pellet_type_3 pellet_type_4'
strain = FINITE
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress strain_zz'
eigenstrain_names = 'fuel_volumetric_swelling_eigenstrain fuel_thermal_eigenstrain fuel_relocation_eigenstrain'
extra_vector_tags = 'ref'
[]
[clad]
add_variables = false
block = 'clad'
strain = FINITE
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_xx creep_strain_zz'
eigenstrain_names = 'clad_irradiation_growth_eigenstrain clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[uo2nat]
add_variables = false
block = 'pellet_type_2 pellet_type_5'
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
eigenstrain_names = 'uo2nat_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[al2o3]
add_variables = false
block = 'pellet_type_1 pellet_type_6'
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
eigenstrain_names = 'al2o3_thermal_eigenstrain'
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
block = 'pellet_type_3 pellet_type_4'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_3 pellet_type_4'
rod_ave_lin_pow = average_lhr
axial_power_profile = axial_scaling_lhr
rpf_input = radial_power_profile
num_radial = 40
bias = 0.95
num_axial = 20
a_lower = 118.3e-03
a_upper = 518.7e-03
fuel_inner_radius = 0.
fuel_outer_radius = 4.095e-03
fuel_volume_ratio = 1.
RPF = RPF
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1.0e+7
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
thermal_accommodation_model = TOPTAN
gas_thermal_conductivity_model = ADVANCED
kennard_coefficient = 0.2173
jump_distance_model = TOPTAN
roughness_primary = 1.0e-6
roughness_secondary = 2.0e-6
gap_conductance_model = TOPTAN
quadrature = true
normal_smoothing_distance = 0.1
[]
[pellet_to_pellet1]
type = GapHeatTransfer
variable = temp
primary = 21
secondary = 22
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet2]
type = GapHeatTransfer
variable = temp
primary = 23
secondary = 24
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet3]
type = GapHeatTransfer
variable = temp
primary = 25
secondary = 26
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet4]
type = GapHeatTransfer
variable = temp
primary = 27
secondary = 28
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet5]
type = GapHeatTransfer
variable = temp
primary = 29
secondary = 30
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[CoolantChannel]
# Halden HBWR under natural circulation (v=0.4m/s)
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_inlet_temp
inlet_pressure = 3.5e+06 # Pa
inlet_massflux = 360. # kg/m^2-s
flow_area = 0.000195
heated_diameter = 0.0261
heated_perimeter = 0.0298
hydraulic_diameter = 0.0261
htc_correlation_type = 2 # Jens-Lottes (recommended for Halden HBWR)
compute_enthalpy = true
linear_heat_rate = average_lhr
axial_power_profile = axial_scaling_lhr
oxide_thickness = oxide_thickness
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.5e+06
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.e+06
startup_time = 0.
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
## fuel ##
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_3 pellet_type_4'
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_3 pellet_type_4'
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_3 pellet_type_4'
temperature = temp
thermal_expansion_coeff = 10.0e-06
stress_free_temperature = 295.0
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
burnup_function = burnup
temperature = temp
gas_swelling_model_type = SIFGRS
block = 'pellet_type_3 pellet_type_4'
initial_fuel_density = 10478. # 95.6% 10960
initial_porosity = 0.044
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_3 pellet_type_4'
burnup_function = burnup
diameter = 8.19e-03
rod_ave_lin_pow = average_lhr
axial_power_profile = axial_scaling_lhr
diametral_gap =170.e-06
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fission_gas_release_and_swelling]
type = UO2Sifgrs
block = 'pellet_type_3 pellet_type_4'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
initial_porosity = 0.044
diff_coeff_option = TURNBULL_D1_D2
transient_option = NO_TRANSIENT
rod_ave_lin_pow = average_lhr
axial_power_profile = axial_scaling_lhr
[]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_3 pellet_type_4'
temperature = temp
burnup_function = burnup
thermal_conductivity_model = TOPTAN
initial_porosity = 0.044
[]
[fuel_density]
type = StrainAdjustedDensity
block = 'pellet_type_3 pellet_type_4'
strain_free_density = ${initial_fuel_density}
[]
## uo2nat ##
[uo2nat_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_2 pellet_type_5'
youngs_modulus = 2.0e+11
poissons_ratio = 0.345
[]
[uo2nat_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_2 pellet_type_5'
[]
[uo2nat_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_2 pellet_type_5'
temperature = temp
thermal_expansion_coeff = 10.e-06
stress_free_temperature = 295.0
eigenstrain_name = 'uo2nat_thermal_eigenstrain'
[]
[uo2nat_thermal]
type = HeatConductionMaterial
block = 'pellet_type_2 pellet_type_5'
thermal_conductivity = 3.
specific_heat = 300.
[]
[uo2nat_density]
type = StrainAdjustedDensity
block = 'pellet_type_2 pellet_type_5'
strain_free_density = ${initial_fuel_density}
[]
## al2o3 ##
[al2o3_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_1 pellet_type_6'
youngs_modulus = 3.0e+11
poissons_ratio = 0.21
[]
[al2o3_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_6'
[]
[al2o3_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1 pellet_type_6'
temperature = temp
thermal_expansion_coeff = 8.1e-06
stress_free_temperature = 295.0
eigenstrain_name = 'al2o3_thermal_eigenstrain'
[]
[al2o3_thermal]
type = HeatConductionMaterial
block = 'pellet_type_1 pellet_type_6'
thermal_conductivity = 18.
specific_heat = 880.
[]
[al2o3_density]
type = StrainAdjustedDensity
block = 'pellet_type_1 pellet_type_6'
strain_free_density = 3800.
[]
## clad ##
[clad_elasticity]
type = ZryElasticityTensor
block = 'clad'
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 'clad'
tangent_operator = elastic
inelastic_models = 'clad_creep'
[]
[clad_creep]
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
temperature = temp
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 'clad'
stress_free_temperature = 295
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_growth_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 'clad'
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temp
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
use_coolant_channel = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
min_value = 295
max_value = 3000
[]
[limitX]
type = MaxIncrement
max_increment = 1.e-05
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = ' lu superlu_dist 100'
l_tol = 1.e-02
line_search = 'none'
l_max_its = 200
nl_max_its = 30
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-10
start_time = -200.
n_startup_steps = 1
end_time = 223062317.
num_steps = 20000
dtmax = 5.e+05
dtmin = 1.
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.e+02
optimal_iterations = 25
iteration_window = 5
timestep_limiting_function = average_lhr
force_step_every_function_point = true
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = average_lhr
[]
[gas_volume]
type = InternalVolume
boundary = 9
[]
[fuel_volume]
type = InternalVolume
boundary = 8
outputs = exodus
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = 'pellet_type_3 pellet_type_4'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 'pellet_type_3 pellet_type_4'
[]
[avg_gap_conductance]
type = SideAverageValue
boundary = 10
variable = gap_cond
[]
[TCHoleBot_temp]
type = NodalVariableValue
variable = temp
nodeid = 63 # !! Mesh dependent
[]
[TC_temp_node1]
type = NodalVariableValue
variable = temp
nodeid = 793
[]
[TC_temp_node2]
type = NodalVariableValue
variable = temp
nodeid = 785
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
[]
[max_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_3 pellet_type_4'
value_type = max
variable = temp
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 'pellet_type_3 pellet_type_4'
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[console]
type = Console
max_rows = 5
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage max_fuel_temp'
execute_on = 'FINAL'
[]
[]
(test/tests/sifgrs/uo2/ad_ig_bubble_coarsening.i)
# This test is veryfing the implementation of the intragranular coarsening capability in Sifgrs.
# The results have been benchmarked to a stand-alone implementation of the model.
# The resulting amount of intragranular swelling can feed the thermomechanical analysis
# using the swelling model SIFGR_IG in the constitutive relation block.
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
x = '0. 6.07e7 60700250. 60700500. 60704100. 60704600.'
y = '600. 600. 1450. 2300. 2300. 600.'
[]
[Fiss_func]
type = PiecewiseLinear
x = '0. 6.07e7 60700250. 60700500. 60704100. 60704600.'
y = '1.e19 1.e19 1.e19 1.e19 1.e19 1.e19'
[]
[]
[Variables]
[T]
initial_condition = 600.
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_disl_grn]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_disl_grn]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_disl_grn]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_intra_total]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[bbl_cnc]
type = ADMaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
execute_on = 'linear'
[]
[rad_bbl]
type = ADMaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
execute_on = 'linear'
[]
[gascnc_bbl]
type = ADMaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
execute_on = 'linear'
[]
[bbl_cnc_disl]
type = ADMaterialRealAux
variable = bbl_disl_grn
property = bubble_concentration_intra_dislocation
execute_on = 'linear'
[]
[rad_bbl_disl]
type = ADMaterialRealAux
variable = rad_bbl_disl_grn
property = bubble_radius_intra_dislocation
execute_on = 'linear'
[]
[gascnc_bbl_disl]
type = ADMaterialRealAux
variable = gas_bbl_disl_grn
property = gas_concentration_bubble_intra_dislocation
execute_on = 'linear'
[]
[dvv0gr]
type = ADMaterialRealAux
variable = deltav_v0_intra_total
property = deltav_v0_intra_total
execute_on = 'linear'
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 0
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 0
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
grain_radius_const = 5.e-6
ig_bubble_model = NUCLEATION_RESOLUTION
diff_coeff_option = TURNBULL_D1_4D2_D3
res_param_option = HETEROGENEOUS_SETYAWAN
ig_bubble_coarsening = WITH_COARSENING
ig_diff_algorithm = POLYPOLE1
nuclerate_scalef = 0.5
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = -100
end_time = 60704600.
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 10
iteration_window = 4
growth_factor = 2.
linear_iteration_ratio = 100
time_t = '0 6.0e+7 6.07e7 60704600'
time_dt = '1000 10000 100 1'
force_step_every_function_point = true
timestep_limiting_function = Temp_func
[]
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 0
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 0
[]
[radius_bubbles_at_dislocations]
type = ElementAverageValue
variable = rad_bbl_disl_grn
block = 0
execute_on = TIMESTEP_END
[]
[density_bbl_dislocations]
type = ElementAverageValue
variable = bbl_disl_grn
block = 0
execute_on = TIMESTEP_END
[]
[intrag_swelling]
type = ElementAverageValue
variable = deltav_v0_intra_total
block = 0
execute_on = TIMESTEP_END
[]
[]
[Outputs]
exodus = true
[]
(test/tests/fuelrodlinevaluesampler/example_problem_smeared_test.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
energy_per_fission = 3.2e-11 # J/fission
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
displacements = 'disp_x disp_y'
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = SmearedTwoPelletOneType2D.e
[]
[]
[Variables]
[temp]
initial_condition = 580.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'fuel_volumetric_swelling_eigenstrain
fuel_relocation_eigenstrain fuel_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[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
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = 'pin_geometry'
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[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
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'initial timestep_end'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial timestep_end'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = -200
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
initial_porosity = 0.0
temperature = temp
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = pellet_type_1
stress_free_temperature = 295
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[hotpressing]
type = UO2HotPressingCreepUpdate
block = pellet_type_1
burnup_function = burnup
initial_grain_radius = 10.0e-6
[]
[radial_return_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'hotpressing'
block = pellet_type_1
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
fuel_pin_geometry = 'pin_geometry'
relocation_activation1 = 5000 #TM default value
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 1.e20
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_creep_model]
type = ZryCreepHayesHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
model_irradiation_creep = true
model_thermal_creep = true
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 300
[]
[]
[Preconditioning]
[SMP]
type = SMP
coupled_groups = 'disp_x,disp_y'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-pc_type_asm'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-5 #8e-3
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
start_time = -200
num_steps = 2
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
optimal_iterations = 6
iteration_window = 2
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
component = 1
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[_dt] # time step
type = TimestepSize
execute_on = timestep_end
[]
[nonlinear_its] # number of nonlinear iterations at each timestep
type = NumNonlinearIterations
execute_on = timestep_end
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.02372 # rod height
execute_on = 'initial timestep_end'
[]
[]
[VectorPostprocessors]
[fuel_vonmises]
type = FuelRodLineValueSampler
variable = vonmises_stress
material = 'fuel'
fraction = 0.51
num_points = 20
orientation = 'horizontal'
fuel_pin_geometry = 'pin_geometry'
outputs = chkfile
[]
[clad_vonmises]
type = FuelRodLineValueSampler
variable = vonmises_stress
material = 'clad'
fraction = 0.51
num_points = 9
orientation = 'horizontal'
fuel_pin_geometry = 'pin_geometry'
outputs = chkfile
[]
[]
[Outputs]
exodus = true
color = false
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = 'FINAL'
[]
[]
(workshop/bison_example/Smeared.i)
# This model is a higher order, discrete 10 pellet fuel stack (pellet_type_1).
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = always
patch_size = 100 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[file]
file = smeared.e
type = FileMeshGenerator
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[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]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[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 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775
RPF = RPF
# N235 = N235
# N236 = N236
# N238 = N238
# N239 = N239
# N240 = N240
# N241 = N241
# N242 = N242
[]
[]
[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
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3145
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[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
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160.0e-6
diameter = 0.0082
burnup_relocation_stop = 0.035
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
[]
[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
zircaloy_material_type = stress_relief_annealed
[]
[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
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[fuel_centerline_temp]
type = NodalVariableValue
variable = temp
nodeid = 616
[]
[fuel_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 587
[]
[clad_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 1440
[]
[penetration_mid]
type = NodalVariableValue
variable = penetration
nodeid = 587
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[]
[VectorPostprocessors]
[clad]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'timestep_end'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(test/tests/sifgrs/uo2/ad_scidac_resolution.i)
# @Requirement F2.40
# This test is for evaluating the mechanistic model for the intra-granular fission gas behavior,
# considering the re-solution parameter as proposed by Setyawan et al. 2018 JoAP
#
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1273'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
initial_condition = 1273
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[bbl_cnc]
type = ADMaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
execute_on = 'TIMESTEP_END'
[]
[rad_bbl]
type = ADMaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
execute_on = 'TIMESTEP_END'
[]
[gascnc_bbl]
type = ADMaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 0
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 0
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
grain_radius_const = 5.e-6
ig_bubble_model = NUCLEATION_RESOLUTION
res_param_option = HETEROGENEOUS_SETYAWAN
initial_porosity = 0.0
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 10
dt = 19800.
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 0
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 0
[]
[bubble_density]
type = ElementAverageValue
block = 0
variable = bbl_grn_3
execute_on = TIMESTEP_END
[]
[bubble_radius]
type = ElementAverageValue
block = 0
variable = rad_bbl_grn
execute_on = TIMESTEP_END
[]
[]
[Outputs]
exodus = true
[]
(examples/TRISO/full_particle/2D/full_particle.i)
initial_fuel_density = 10810.0
[GlobalParams]
density = ${initial_fuel_density}
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = full_particle.e
[]
[]
[Variables]
[temperature]
initial_condition = 1346.0
[]
[]
[AuxVariables]
[fission_rate]
block = fuel
[]
[burnup]
block = fuel
[]
[grain_radius]
initial_condition = 5.0e-6
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = fuel
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[buffer]
block = buffer
add_variables = true
strain = FINITE
eigenstrain_names = 'buffer_thermal_strain buffer_eigenstrain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[IPyC]
block = IPyC
add_variables = true
strain = FINITE
eigenstrain_names = 'IPyC_eigenstrain IPyC_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[SiC]
block = SiC
add_variables = true
strain = FINITE
eigenstrain_names = 'SiC_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[OPyC]
block = OPyC
add_variables = true
strain = FINITE
eigenstrain_names = 'OPyC_eigenstrain OPyC_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[]
[Functions]
[fast_neutron_flux]
type = ParsedFunction
expression = 1.708707e18
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 15
secondary = 17
penalty = 1e5
model = frictionless
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 15
secondary = 17
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
[]
[]
[BCs]
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[no_disp_y]
type = DirichletBC
variable = disp_y
boundary = yzero
value = 0.0
[]
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1346
[]
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[exterior_pressure_y]
type = Pressure
variable = disp_y
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure]
[plenumPressure]
boundary = 'PyCGapBndry BufferGapBndry'
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18 # n/m^2-sec
[]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temperature
thermal_conductivity_model = FINK_LUCUTA
initial_porosity = 0.0
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e8
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = fuel_thermal_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius = grain_radius
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2.0e8
poissons_ratio = 0.345
[]
[buffer_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = buffer
[]
[buffer_temperature]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_density]
type = StrainAdjustedDensity
strain_free_density = 1000.0
block = buffer
[]
[buffer_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = buffer
thermal_expansion_coeff = 5.5e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = buffer_thermal_strain
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC buffer'
[]
[buffer_irraditation]
type = PyCIrradiationEigenstrain
block = buffer
pyc_type = buffer
eigenstrain_name = buffer_eigenstrain
[]
[IPyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[IOPyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
temperature = temperature
[]
[IOPyC_temperature]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[IOPyC_density]
type = StrainAdjustedDensity
block = 'IPyC OPyC'
strain_free_density = 1880.0
[]
[IPyC_densification]
type = PyCIrradiationEigenstrain
block = IPyC
pyc_type = dense
eigenstrain_name = IPyC_eigenstrain
[]
[IPyC_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = IPyC
thermal_expansion_coeff = 5.5e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = IPyC_thermal_strain
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = SiC
[]
[SiC_temperature]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[SiC_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = SiC_thermal_strain
[]
[OPyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = OPyC
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[OPyC_densification]
type = PyCIrradiationEigenstrain
block = OPyC
pyc_type = dense
eigenstrain_name = OPyC_eigenstrain
[]
[OPyC_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = OPyC
thermal_expansion_coeff = 5.5e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = OPyC_thermal_strain
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 20
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 3.10176e7
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 10
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[max_xx_IPyC]
type = ElementExtremeValue
variable = stress_xx
block = IPyC
[]
[max_yy_IPyC]
type = ElementExtremeValue
variable = stress_yy
block = IPyC
[]
[min_zz_IPyC]
type = ElementExtremeValue
variable = stress_zz
block = IPyC
value_type = min
[]
[max_xx_SiC]
type = ElementExtremeValue
variable = stress_xx
block = SiC
[]
[max_yy_SiC]
type = ElementExtremeValue
variable = stress_yy
block = SiC
[]
[min_zz_SiC]
type = ElementExtremeValue
variable = stress_zz
block = SiC
value_type = min
[]
[max_xx_OPyC]
type = ElementExtremeValue
variable = stress_xx
block = OPyC
[]
[max_yy_OPyC]
type = ElementExtremeValue
variable = stress_yy
block = OPyC
[]
[min_zz_OPyC]
type = ElementExtremeValue
variable = stress_zz
block = OPyC
value_type = min
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
execute_on = 'initial linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
execute_on = 'initial linear'
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
execute_on = 'initial TIMESTEP_END'
[]
[volumeFuel]
type = InternalVolume
boundary = fuel
execute_on = 'initial TIMESTEP_END'
[]
[volumeGas]
type = InternalVolume
boundary = BufferGapVol
addition = -5.53e-11
execute_on = 'initial TIMESTEP_END'
[]
[volumeBufferShell]
type = InternalVolume
boundary = BufferGapVol
execute_on = 'initial TIMESTEP_END'
[]
[ave_temp_interior]
type = SideAverageValue
boundary = BufferGapVol
variable = temperature
execute_on = 'INITIAL TIMESTEP_END'
[]
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
execute_on = 'INITIAL TIMESTEP_END'
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
execute_on = 'INITIAL TIMESTEP_END'
[]
[avg_surface_temperature]
type = SideAverageValue
variable = temperature
boundary = exterior
execute_on = 'INITIAL TIMESTEP_END'
[]
[time_int_surf_temperature]
type = TimeIntegratedPostprocessor
value = avg_surface_temperature
execute_on = 'INITIAL TIMESTEP_END'
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temperature
initial_enrichment = 0.14029
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
execute_on = Final
show = 'max_xx_IPyC max_yy_IPyC min_zz_IPyC max_xx_SiC max_yy_SiC min_zz_SiC co_production fis_gas_released avg_surface_temperature'
[]
[]
(test/tests/sifgrs/uo2/percolation.i)
# This test is to verify that the optional check for a path to a free surface for gas release works correctly.
# When the optional percolation AuxVariable is supplied to Sifgrs, gas release is not allowed unless
# that variable is > 0.5 locally. The PercolationUserObject checks whether each position is connected
# to a free surface and sets the AuxVariable accordingly.
# In this test, the gas released should be nearly the same as the sifgrs_second_stage test.
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[free1]
type = SideSetsAroundSubdomainGenerator
new_boundary = free1
normal = '1 0 0'
block = 1
input = mesh
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1400'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
initial_condition = 1400
[]
[]
[AuxVariables]
[fission_rate]
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
# percolation AuxVariables
[open_coverage]
order = CONSTANT
family = MONOMIAL
[]
[open_threshold]
order = CONSTANT
family = MONOMIAL
[]
[open]
order = CONSTANT
family = MONOMIAL
[]
[cluster]
order = CONSTANT
family = MONOMIAL
[]
[percolated]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = 'initial linear'
[]
# percolation auxkernels
[open_coverage]
type = MaterialRealAux
variable = open_coverage
property = GBCoverage
[]
[open_threshold]
type = MaterialRealAux
variable = open_threshold
property = sat_coverage
[]
[open]
type = ParsedAux
variable = open
coupled_variables = 'open_coverage open_threshold'
expression = 'open_coverage-open_threshold'
[]
[cluster]
type = FeatureFloodCountAux
variable = cluster
execute_on = 'timestep_begin'
field_display = UNIQUE_REGION
flood_counter = percolate
[]
[percolated]
type = PercolationAux
variable = percolated
execute_on = 'timestep_begin'
percolation = percolate
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
block = 1
temperature = T
fission_rate = fission_rate
percolation_to_surface = percolated
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
end_time = 5e7
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[]
[UserObjects]
[percolate]
type = PercolationUserObject
execute_on = 'timestep_begin'
boundaries = 'free1'
variable = open
threshold = 0.0
[]
[]
[Outputs]
exodus = true
[]
(assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_1/vitanza.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.20435313e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = 27_1_mesh.e
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[grain_radius]
block = 3
initial_condition = 7.5e-6
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
x = '-100 0 100 1e8'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[q]
type = CompositeFunction
functions = 'power_profile axial_peaking_factors'
[]
[]
[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
block = 3
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.01496
a_lower = 0.00226
fuel_inner_radius = 0.0
fuel_outer_radius = 0.005305
fuel_volume_ratio = 1
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = 3
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[]
[BCs]
[fuel_wall_temp]
type = DirichletBC
variable = temp
boundary = '10'
value = 673
preset = false
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.05
[]
[fuel_density]
type = ParsedMaterial
block = 3
property_name = density
expression = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
dtmax = 1e6
dtmin = 1
end_time = 2e8
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 6
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
block = 3
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = 3
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
block = 3
execute_on = linear
burnup_function = burnup
type = ElementIntegralPower
variable = temp
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 0.0127
[]
[ave_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[fuel_center_temperature]
type = NodalVariableValue
nodeid = 174 # Paraview GlobalNodeID 175 at (0.0, 0.00862374)
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = false
color = false
print_linear_residuals = true
[csv]
type = CSV
execute_on = final
[]
[chkfile]
type = CSV
show = 'burnup fis_gas_percent fuel_center_temperature rod_total_power pellet_volume'
execute_on = final
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'fis_gas_percent >= 0.01'
[]
[]
(assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim_DiffCoeff4_GrainGrowth.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.2
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9144
pellet_outer_radius = 2.794e-3
pellet_inner_radius = 6.985e-4
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 101.6e-6
clad_thickness = 0.5334e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.057
elem_type = QUAD8
nx_c = 4
ny_c = 1000
nx_p = 10
ny_p = 500
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
scaling = 1
[]
[]
[AuxVariables]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fraction_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 0.854004932 0.854004932'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 2.99513e+19 2.99513e+19'
[]
[axial_power_profile]
type = PiecewiseBilinear
x = '0.0334152 0.09468 0.1559448 0.2162952 0.27756 0.3388248 0.3991752 0.46044 0.5217048 0.5820552 0.64332 0.7045848 0.7649352 0.8262 0.8874648'
y = '0 31858942.74'
z = '5493.43832 7183.727034 29157.48031 34228.34646 37608.92388 40144.35696 41412.07349 42257.21785 41834.64567 39721.78478 37608.92388 33805.77428 28312.33596 4225.721785 2535.433071 5041.338583 6592.519685 26757.87402 31411.41732 34513.77953 36840.55118 38003.93701 38779.52756 38391.73228 36452.75591 34513.77953 31023.62205 25982.28346 3877.952756 2326.771654'
scale_factor = 1
axis = 1
[]
[average_power_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 24264.05646 24264.05646'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[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
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.2
axial_power_profile = axial_power_profile
rod_ave_lin_pow = fraction_history
pellet_diameter = 0.005588
execute_on = timestep_begin
pellet_inner_diameter = 0.001397
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 0.151e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 0.151e6
inlet_massflux = 1687.43
rod_diameter = 6.858e-3
rod_pitch = 1.7e-2
linear_heat_rate = fraction_history
axial_power_profile = axial_power_profile
coolant_material = sodium
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = 0.2
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
outputs = exodus
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
bubble_gb_limit = 1.0e+11
diff_coeff_option = TURNBULL_D1_4D2_4D3
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fast_neutron_flux]
type = GenericFunctionMaterial
block = clad
prop_names = fast_neutron_flux
prop_values = fast_neutron_flux_function
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 31858942.74
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = fraction_history
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.9144 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = fftf_fo2_L09_new_DiffCoeff4_GrainGrowth_chkfile
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/meso_thcond_test/sifgrs_swelling_fissiongas.i)
# This test is for the fuel swelling and porosity computation in the Sifgrs
# fission gas behavior model for UO2 (UO2Sifgrs).
# As complementary to the fission gas release process, the fission gas
# swelling is related to gas retention in the fuel in the form of bubbles.
# Through a direct description of the gas bubble development, the fission
# gas swelling and release are modeled as inherently coupled processes, on a
# physical basis. Only the fission gas swelling due to grain-face bubbles is
# considered.
# In a comprehensive treatment of fission gas release and fuel swelling, Sifgrs
# also incorporates empirical models for the swelling due to solid fission
# products and the fuel densification.
# Moreover, the different contributions to fuel porosity, namely, those due to
# fabrication pores, gas bubbles (thus associated with fission gas swelling),
# and sintering (densification), are computed consistently with the swelling
# calculations. Then, the fuel total porosity in each mesh location can be
# tracked (auxkernel PorosityAuxUO2), and considered in the computation of
# other relevant material properties like the fuel thermal conductivity
# (material model UO2Thermal).
# This test aims at demonstrating the above model capabilities. The considered
# case involves a single-element cubic domain, constant temperature (1400 K)
# and fission rate (1e19 f/(m**3s)), and a irradiation time of 1e8 s. The
# Sifgrs model is adopted for calculating the fission gas release and fuel
# swelling. Starting from a typical as-fabricated value of 5%, the fuel
# porosity evolves consistently with the swelling. The fuel thermal
# conductivity is calculated as coupled with porosity, which allows taking
# into account the conductivity degradation due to progressive increase of
# gaseous porosity (see also the attached file regression_tests_sifgrs.xlsx).
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = cube_111.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = 1400.
[]
[Fiss_func]
type = ParsedFunction
expression = 1.e19
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1400.
[]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[burnup]
order = FIRST
family = LAGRANGE
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.05
[]
[density]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_bubble_GB]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_sl]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_dn]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_swe]
order = CONSTANT
family = MONOMIAL
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
[intra_porosity]
order = CONSTANT
family = MONOMIAL
[]
[gas_atom_conc]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
[]
[GBresistance]
order = CONSTANT
family = MONOMIAL
[]
[grain_radius]
order = CONSTANT
family = MONOMIAL
initial_condition = 5e-6
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[AuxKernels]
[frate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[brnp]
type = BurnupAux
variable = burnup
block = 1
fission_rate = fission_rate
density = 10417.
execute_on = 'initial timestep_begin'
[]
[por]
type = PorosityAuxUO2
block = 1
variable = porosity
execute_on = linear
[]
[rho]
type = MaterialRealAux
variable = density
property = density
execute_on = 'initial timestep_end'
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bubble_GB
property = deltav_v0_bubble_GB
[]
[dvv0swe]
type = MaterialRealAux
variable = deltav_v0_swe
property = volumetric_swelling_strain
[]
[thcond]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[GBCoverage]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = 'initial timestep_end'
[]
[intra_porosity]
type = MaterialRealAux
variable = intra_porosity
property = intra_porosity
[]
[gas_atom_conc]
type = MaterialRealAux
variable = gas_atom_conc
property = gas_atom_conc
[]
[deltav_v0_dn]
type = MaterialRealAux
variable = deltav_v0_dn
property = densification
[]
[deltav_v0_sl]
type = MaterialRealAux
variable = deltav_v0_sl
property = solid_swelling
[]
[rad_bbl_bdr]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = 'initial timestep_end'
[]
[GBresistance]
type = MaterialRealAux
variable = GBresistance
property = GBresistance
execute_on = 'initial timestep_end'
[]
# [grain_radius]
# type = GrainRadiusAux
# variable = grain_radius
# temperature = temp
# []
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = temp
function = Temp_func
boundary = 1
[]
[x_disp]
type = DirichletBC
variable = disp_x
value = 0
boundary = 1
[]
[y_disp]
type = DirichletBC
variable = disp_y
value = 0
boundary = 2
[]
[z_disp]
type = DirichletBC
variable = disp_z
value = 0
boundary = 3
[]
[]
[Materials]
[swelling]
type = UO2VolumetricSwellingEigenstrain
block = 1
burnup = burnup
temperature = temp
initial_fuel_density = 10417.0
eigenstrain_name = fuel_volumetric_strain
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 1.0e-5
temperature = temp
stress_free_temperature = 1400.0
eigenstrain_name = fuel_thermal_strain
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 10417.0
[]
[fission_gas_release_and_swelling]
type = UO2Sifgrs
block = 1
temperature = temp
fission_rate = fission_rate
burnup = burnup
initial_porosity = 0.05
[]
[fuel_thermal_meso]
type = UO2FissionGasThermal
block = 1
temperature = temp
burnup = burnup
grain_radius = 5e-6
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1.e-04
nl_abs_tol = 1.e-05
nl_rel_tol = 1.e-05
start_time = 0.
num_steps = 100
dt = 1.e+06
end_time = 1.e+08
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 1
[]
[GBCov]
type = ElementalVariableValue
variable = GBCoverage
elementid = 0
execute_on = 'initial timestep_end'
[]
[gas_atom_conc]
type = ElementalVariableValue
variable = gas_atom_conc
elementid = 0
[]
[thcond]
type = ElementalVariableValue
variable = thermal_conductivity
elementid = 0
execute_on = 'initial timestep_end'
[]
[intra_porosity]
type = ElementalVariableValue
variable = intra_porosity
elementid = 0
[]
[rad_bbl_bdr]
type = ElementalVariableValue
variable = rad_bbl_bdr
elementid = 0
execute_on = 'initial timestep_end'
[]
[GBresistance]
type = ElementalVariableValue
variable = GBresistance
elementid = 0
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
file_base = fissiongas
csv = true
[exodus]
type = Exodus
[]
[]
(examples/NuclearMaterialActions/LWR/Normal/2D_discrete_finiteStrain_nuc_mat_action_integrated/2D_discrete_finiteStrain_nuc_mat_action_integrated.i)
# This model is a linear element, 10 discrete fuel pellet stack (pellet_type_1) with a fine mesh.
[GlobalParams]
# Set initial fuel density, other global parameters
density = 10431.0
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
temperature = temperature
grain_radius = grain_radius
order = FIRST #Mesh element dictate this
family = LAGRANGE
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = '../../../../2D-RZ_rodlet_10pellets/fine10_rz.e'
[]
[]
[AuxVariables]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = '../../../../2D-RZ_rodlet_10pellets/powerhistory.csv'
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = '../../../../2D-RZ_rodlet_10pellets/peakingfactors.csv'
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[]
[AuxKernels]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temperature_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[NuclearMaterials]
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
fission_operation = Normal
physics = 'Mechanics Thermal'
initial_temperature = 580.0
strain = FINITE
[UO2]
[fuel]
block = pellet_type_1
uo2_models = 'Burnup Elastic Relocation Swelling ThermalExpansion'
stress_free_temperature = 295.0
fuel_volume_ratio = 0.987787
burnup_relocation_stop = 0.03
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
extra_vector_tags = 'ref'
[]
[]
[ZirconiumAlloy]
[clad]
block = clad
cladding_models = 'Elastic Creep IrradiationGrowth ThermalExpansion'
stress_free_temperature = 295.0
extra_vector_tags = 'ref'
[]
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = THIRD
side_order = FIFTH
[]
[]
[Postprocessors]
[ave_temperature_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temperature]
type = SideAverageValue
boundary = 7
variable = temperature
execute_on = 'initial linear'
[]
[ave_fuel_temperature]
type = ElementAverageValue
block = pellet_type_1
variable = temperature
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[_dt]
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[mid_penetration]
type = NodalVariableValue
nodeid = 3781 #!!Mesh dependent!!
variable = penetration
[]
[central_fuel_temperature]
type = NodalVariableValue
variable = temperature
nodeid = 3781 # !! Mesh dependent
[]
[max_fuel_temperature]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temperature
[]
[max_clad_temperature]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet_type_1
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[effective_creep_strain]
type = ElementAverageValue
block = clad
variable = effective_creep_strain
[]
[effective_creep_strain_rate]
type = ElementAverageValue
block = clad
variable = creep_strain_rate
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_old_bubble_gb_lim.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.2
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9144
pellet_outer_radius = 2.794e-3
pellet_inner_radius = 6.985e-4
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 101.6e-6
clad_thickness = 0.5334e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.057
elem_type = QUAD8
nx_c = 4
ny_c = 1000
nx_p = 10
ny_p = 500
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
scaling = 1
[]
[]
[AuxVariables]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fraction_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 0.854004932 0.854004932'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 2.99513e+19 2.99513e+19'
[]
[axial_power_profile]
type = PiecewiseBilinear
x = '0.0334152 0.09468 0.1559448 0.2162952 0.27756 0.3388248 0.3991752 0.46044 0.5217048 0.5820552 0.64332 0.7045848 0.7649352 0.8262 0.8874648'
y = '0 31858942.74'
z = '5493.43832 7183.727034 29157.48031 34228.34646 37608.92388 40144.35696 41412.07349 42257.21785 41834.64567 39721.78478 37608.92388 33805.77428 28312.33596 4225.721785 2535.433071 5041.338583 6592.519685 26757.87402 31411.41732 34513.77953 36840.55118 38003.93701 38779.52756 38391.73228 36452.75591 34513.77953 31023.62205 25982.28346 3877.952756 2326.771654'
scale_factor = 1
axis = 1
[]
[average_power_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 24264.05646 24264.05646'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[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
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.2
axial_power_profile = axial_power_profile
rod_ave_lin_pow = fraction_history
pellet_diameter = 0.005588
execute_on = timestep_begin
pellet_inner_diameter = 0.001397
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 0.151e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 0.151e6
inlet_massflux = 1687.43
rod_diameter = 6.858e-3
rod_pitch = 1.7e-2
linear_heat_rate = fraction_history
axial_power_profile = axial_power_profile
coolant_material = sodium
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = 0.2
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
outputs = exodus
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fast_neutron_flux]
type = GenericFunctionMaterial
block = clad
prop_names = fast_neutron_flux
prop_values = fast_neutron_flux_function
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 31858942.74
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = fraction_history
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.9144 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = fftf_fo2_L09_old_chkfile
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_10/case_10_1D.i)
#
# This case is taken from Advances in high temperature gas cooled reactor fuel
# technology. Technical Report IAEA-TECDOC-1674, International Atomic Energy
# Agency, 2012.
#
# See also Hales, et al., Multidimensional multiphysics simulation of TRISO
# particle fuel, JNM, 443, 2013. https://doi.org/10.1016/j.jnucmat.2013.07.070
#
# The correctness of the results computed by this case must be checked against
# results from the IAEA benchmark. The best way to do this is to compare
# results with information in the JNM article.
#
[GlobalParams]
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19 # units of fissions/m**3
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[IPyC_OPyC]
block = 'IPyC OPyC'
strain = finite
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[rest]
block = 'fuel buffer SiC'
strain = finite
eigenstrain_names = thermal_strain
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
density = 10810.0
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
# contact_pressure_input = 10e6
# quadrature = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1346.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure] # apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = volumeGas # coupling to post processor to get gas volume
material_input = 'fis_gas_released co_production' # coupling to post processor to get fission gas added, co added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18 # n/m^2-sec
[]
[fission_gas_release] # Sifgr fission gas release mode
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temperature]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000 #kg/m^3
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_temperature]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0 # kg/m^3
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temperature]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0 # kg/m^3
block = SiC
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 1e-7
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 3.10176e7
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
exodus = true
csv = true
perf_graph = true
[]
(assessment/MOX/JOYO/B14/PTM010/analysis/b14_ptm010_2DRZ_t.i)
initial_fuel_density = 10964.6
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.4
pellet_outer_radius = 0.002675
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000105
clad_thickness = 0.00047
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.685
elem_type = QUAD8
nx_c = 4
ny_c = 100
nx_p = 20
ny_p = 100
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
[]
[burnup]
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 39814.5 39814.5 44289.3 44289.3 53927.4 53927.4 0'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 251280'
y = '3.3e+15 3.3e+15'
[]
[f_temp_out_clad]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 634.94 662.273 676.998 686.217 706.339 727 743.358 758.311 780.069 799.077 815.576 846.374 860.233 875.494 882.809 889.8'
scale_factor = 1
axis = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846 0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 34700 34700 38600 38600 47000 47000 0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[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
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.143
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.00535
execute_on = timestep_begin
porosity = pore
energy_per_fission = 3.2e-11
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[temp_clad_outside]
type = FunctionDirichletBC
variable = temp
function = f_temp_out_clad
boundary = 2
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
temperature = temp
porosity = pore
block = pellet
Am_content = 0.0237
oxy_to_metal_ratio = 1.99
output_properties = 'thermal_conductivity'
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10964.6
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius_const = 10e-06
bubble_gb_limit = 1.0e+11
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
line_search = 'none'
fixed_point_max_its = 1
fixed_point_abs_tol = 1e-3
fixed_point_rel_tol = 1e-3
l_max_its = 50
l_tol = 8e-3
nl_max_its = 50
nl_rel_tol = 1e-3
nl_abs_tol = 1e-3
start_time = 0
n_startup_steps = 1
end_time = 251280
dtmax = 10000
dtmin = 0.25
automatic_scaling = true
compute_scaling_once = false
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e1
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = ElementAverageValue
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
variable = burnup
[]
[ave_pore]
type = ElementAverageValue
block = pellet
variable = pore
[]
[max_pore]
type = NodalExtremeValue
block = pellet
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
block = pellet
value_type = min
variable = pore
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.4 # rod height
[]
[]
[VectorPostprocessors]
[fuel_radial_temperature_Sample1]
type = LineValueSampler
variable = temp
start_point = '0.0 0.283 0.0'
end_point = '0.002675 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample1]
type = LineValueSampler
variable = pore
start_point = '0.0 0.283 0.0'
end_point = '0.002675 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample2]
type = LineValueSampler
variable = temp
start_point = '0.0 0.347 0.0'
end_point = '0.002675 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample2]
type = LineValueSampler
variable = pore
start_point = '0.0 0.347 0.0'
end_point = '0.002675 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample3]
type = LineValueSampler
variable = temp
start_point = '0.0 0.2 0.0'
end_point = '0.002675 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample3]
type = LineValueSampler
variable = pore
start_point = '0.0 0.2 0.0'
end_point = '0.002675 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[line_plot]
type = CSV
execute_on = 'FINAL'
time_step_interval = 1
file_base = 1d
create_final_symlink = true
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = b14_ptm010_pore.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/sifgrs/u3si2/burnup_function.i)
# This input tests the coupling of burnup function action to U3Si2Sifgrs
[Mesh]
[gen]
type = ExamplePatchMeshGenerator
dim = 3
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Burnup]
[burnup]
block = 2
rod_ave_lin_pow = 1
axial_power_profile = 1
num_radial = 12
num_axial = 9
a_upper = 0.01496
a_lower = 0.00226
fuel_inner_radius = 0.
fuel_outer_radius = 0.005305
fuel_volume_ratio = 1.
order = CONSTANT
family = MONOMIAL
density = 10000
[]
[]
[Materials]
[fission_gas_behavior]
type = U3Si2Sifgrs
skip_bdr_model = true
temperature = T
burnup_function = burnup
ig_diff_algorithm = POLYPOLE2
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 1
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[]
[Outputs]
exodus = true
[]
(test/tests/sifgrs/uo2/scidac_resolution.i)
# @Requirement F2.40
# This test is for evaluating the mechanistic model for the intra-granular fission gas behavior,
# considering the re-solution parameter as proposed by Setyawan et al. 2018 JoAP
#
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1273'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
initial_condition = 1273
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[bbl_cnc]
type = MaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
execute_on = 'TIMESTEP_END'
[]
[rad_bbl]
type = MaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
execute_on = 'TIMESTEP_END'
[]
[gascnc_bbl]
type = MaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
grain_radius_const = 5.e-6
ig_bubble_model = NUCLEATION_RESOLUTION
res_param_option = HETEROGENEOUS_SETYAWAN
initial_porosity = 0.0
[]
[]
[Executioner]
type = Transient
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 10
dt = 19800.
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[bubble_density]
type = ElementAverageValue
variable = bbl_grn_3
[]
[bubble_radius]
type = ElementAverageValue
variable = rad_bbl_grn
[]
[]
[Outputs]
exodus = true
[]
(test/tests/sifgrs/uo2/ad_polypole2.i)
# @Requirement F2.40
# This test is for evaluating the PolyPole-2 algorithm (for the intra-granular diffusion calculation)
# in the Sifgrs fission gas behavior model.
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 1
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
ig_diff_algorithm = POLYPOLE2
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 1
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[]
[Outputs]
[out]
type = Exodus
[]
[]
(test/tests/triso_failure/triso_1d_failure_error.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19 # units of fissions/m**3
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[high_fidelity_strength_asphericity]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_asphericity]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_change_correlation_asphericity]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
factor = 1.708707e18 # n/m^2-sec
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
# contact_pressure_input = 10e6
# quadrature = true
[]
[]
[BCs]
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1346.0
[]
[exterior_pressure_x]
type = Pressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure]
# apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temperature_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
flux = fast_neutron_flux
temperature = temperature
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
fluence = fast_neutron_fluence
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temperature]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_thermal]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temperature]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength]
type = GenericConstantMaterial
prop_values = '9640000 9640000 9640000'
prop_names = 'characteristic_strength_SiC characteristic_strength_IPyC characteristic_strength_OPyC'
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temperature_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temperature]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temperature]
type = TimeIntegratedPostprocessor
value = avg_surface_temperature
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temperature
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = WeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
characteristic_strength = characteristic_strength_SiC
[]
[failure_indicator_SiC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
[]
[strength_IPyC]
type = WeibullEffectiveMeanStrength
block = IPyC
weibull_modulus = 6
characteristic_strength = characteristic_strength_IPyC
[]
[failure_indicator_IPyC]
type = WeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_type = scalar_quantity
scalar_type = MaxPrincipal
effective_mean_strength = strength_IPyC
[]
[strength_OPyC]
type = WeibullEffectiveMeanStrength
block = OPyC
weibull_modulus = 6
characteristic_strength = characteristic_strength_OPyC
[]
[failure_indicator_OPyC]
type = WeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_type = scalar_quantity
scalar_type = MaxPrincipal
effective_mean_strength = strength_OPyC
[]
[failure_indicator_SiC_crackedIPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_type = scalar_quantity
scalar_type = MaxPrincipal
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
[]
[failure_indicator_SiC_crackedOPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_type = scalar_quantity
scalar_type = MaxPrincipal
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
[]
[triso_failure]
type = TRISOFailureEvaluation
IPyC_failure = failure_indicator_IPyC
OPyC_failure = failure_indicator_OPyC
SiC_failure = failure_indicator_SiC
SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
SiC_failure_crackedOPyC = failure_indicator_SiC_crackedOPyC
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
perf_graph = true
[]
(test/tests/example_problem_test/example_problem_test.i)
[GlobalParams]
density = 10431.0
displacements = 'disp_x disp_y'
energy_per_fission = 3.2e-11 # J/fission
temperature = temp
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = 2_pellet_discrete.e
[]
[]
[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
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'fuel_volumetric_swelling_eigenstrain
fuel_relocation_eigenstrain fuel_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[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
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = 'pin_geometry'
fuel_volume_ratio = 0.987775
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[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
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'initial timestep_end'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial timestep_end'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = -200
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
initial_porosity = 0.0
temperature = temp
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = pellet_type_1
stress_free_temperature = 295
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[hotpressing]
type = UO2HotPressingCreepUpdate
block = pellet_type_1
burnup_function = burnup
initial_grain_radius = 10.0e-6
[]
[radial_return_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = ' hotpressing'
block = pellet_type_1
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
fuel_pin_geometry = 'pin_geometry'
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000 #TM default value
burnup_relocation_stop = 1.e20
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_creep_model]
type = ZryCreepHayesHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
model_irradiation_creep = true
model_thermal_creep = true
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = 10431.0
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 300
[]
[]
[Preconditioning]
[SMP]
type = SMP
coupled_groups = 'disp_x,disp_y'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-pc_type_asm'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-5 #8e-3
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
start_time = -200
num_steps = 2
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
optimal_iterations = 6
iteration_window = 2
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
component = 1
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[_dt] # time step
type = TimestepSize
execute_on = timestep_end
[]
[nonlinear_its] # number of nonlinear iterations at each timestep
type = NumNonlinearIterations
execute_on = timestep_end
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.02372 # rod height
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
exodus = true
color = false
[console]
type = Console
output_linear = true
max_rows = 25
[]
[]
(assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_13/case_13_1D.i)
#
# This case is taken from Advances in high temperature gas cooled reactor fuel
# technology. Technical Report IAEA-TECDOC-1674, International Atomic Energy
# Agency, 2012.
#
# The correctness of the results computed by this case must be checked against
# results from the IAEA benchmark.
#
initial_fuel_density = 10810.0
[GlobalParams]
density = ${initial_fuel_density} # kg/m^3
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DFiveLayerMeshGenerator
elem_type = EDGE3
kernel_radius = 251e-6
buffer_thickness = 95e-6
IPyC_thickness = 41e-6
SiC_thickness = 35e-6
OPyC_thickness = 40e-6
kernel_mesh_density = 6
buffer_mesh_density = 6
IPyC_mesh_density = 6
SiC_mesh_density = 8
OPyC_mesh_density = 6
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1298.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 9.30203234e19 # units of fissions/m**3/s
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[IPyC_OPyC]
block = 'IPyC OPyC'
strain = finite
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[rest]
block = 'fuel buffer SiC'
strain = finite
eigenstrain_names = thermal_strain
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
# contact_pressure_input = 10e6
# quadrature = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1298.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure] # apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = volumeGas # coupling to post processor to get gas volume
material_input = 'fis_gas_released co_production' # coupling to post processor to get fission gas added, co added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.041666666667e18 # n/m^2-sec
[]
[fission_gas_release] # Sifgr fission gas release mode
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1298.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1298.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1298.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temperature]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1010 #kg/m^3
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_temperature]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1870.0 # kg/m^3
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temperature]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0 # kg/m^3
block = SiC
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 1e-7
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 51840000
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
# ro = 346e-6
# ri = 251e-6
# vb = 4/3*pi*(ro^3-ri^3) = 1.07e-10
# buffer density = 1010
# PyC density = 1870
# fill ratio = 1010/1870
# vb*1010/1870 = 5.79e-11
# Must remove 5.79e-11 m^3 from the volume
addition = -5.79e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
exodus = true
csv = true
perf_graph = true
[]
(test/tests/sifgrs/uo2/ad_first_stage_restart2.i)
# This test is for evaluating the first stage (i.e., the intra-granular diffusion calculation) of the Sifgrs fission gas behavior model.
# The first stage is isolated by setting the fractional bubble coverage at grain boundary saturation to zero (saturation_coverage = 0). Under this condition (i.e. gas reaching the grain boundaries goes instantaneously to the plenum), the ratio of fission gas released to fission gas generated calculated by the model should compare very closely with the analytical expression for fractional fission gas release fraction from the grains published by Speight (Nuclear Science and Engineering 37, 180, 1969). The Speight equation for fission gas release fraction (released/produced) is
#
# parameters:
# n and no are summation integers
# a = grain radius in m
# pi = the number pi 3.14159...
# D = effective diffusion coefficient in m^2/s where D includes the effects of intragranular trapping and resolution (see White, JNM 118, 1, 1983, and the
# fgr_diffusion_coefficient_test in BISON for a description)
# t = time in seconds
#
# 6*a^2
# f = 1 - sum(n=1, to no) ---------------- * {1 - exp -[D*n^2*pi^2*t/a^2]}
# pi^4 * D*t*n^4
#
# For no = 1, D = 4.123e-19 m^2/s, a = 1e-5 m, t = 1e6 s, f = 0.596.
# For no = 50, and the same parameters defined above, f = 0.1388
#
# With the output from this test, if one calculates fission gas released / fission gas produced at
# t = 1.e+06, the result should be 0.1032, which compares well with the analytical solution from Speight.
#
# See also the sheet sifgrs_first_stage of the attached excel file (regression_tests_sifgrs.xlsx).
# Check of fission gas produced
# beta = rate of gas production per unit volume by fission
# beta * time * volume = gas produced
# The following parameters are used to calculate beta
#
# t = time in seconds = 5e7
# Avogadros number = 6.023e23 atoms/mol
# FY = fractional yield = fraction of fission gas atoms per fission = 0.3017 atoms/fission
# Y = yield = FY/Avogadros number = atoms/fission / atoms/mol to give mols/fission
# F = fission rate = fissions/m^3*s = 2.5e19
# beta = F*Y = fissions/m^3s * mols/fission = mols/m^3*s
# gas produced = beta * time * volume
# For this test problem, volume = (0.01m)^3 = 1e-6m^3 = volume of single finite element in this problem
#
# Y = 0.3017/6.023e23 = 5.0091e-25 mol/fission
# beta = 2.5e19*5.009e-25 = 1.25e-5 mol/m^3s
# gas produced = 1.25e-5*5e7*1e-6 = 6.26e-4 mols
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = timestep_begin
[]
[FRA]
type = ADMaterialRealAux
variable = fract_FGR_analytical
property = fract_FGR_analytical
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 1
saturation_coverage = 0
temperature = T
fission_rate = fission_rate
testing_output = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 28e6
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 1
[]
[]
[Outputs]
file_base = ad_first_stage_out
[exodus]
type = Exodus
[]
[]
[Problem]
restart_file_base = ad_first_stage_restart1_checkpoint_cp/0028
# Initial condition for T overrides the restart
allow_initial_conditions_with_restart = true
[]
(assessment/MOX/FFTF/FO-2/L09/analysis/fftf_fo2_L09_master.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.2
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9144
pellet_outer_radius = 2.794e-3
pellet_inner_radius = 6.985e-4
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 101.6e-6
clad_thickness = 0.5334e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.057 #1.058 - 0.001 clad_bot_gap_height
elem_type = QUAD8
nx_c = 4
ny_c = 500
nx_p = 30
ny_p = 500
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
scaling = 1
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[thermal_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fraction_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 0.854004932 0.854004932'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 2.99513e+19 2.99513e+19'
[]
[axial_power_profile]
type = PiecewiseBilinear
x = '0.0334152 0.09468 0.1559448 0.2162952 0.27756 0.3388248 0.3991752 0.46044 0.5217048 0.5820552 0.64332 0.7045848 0.7649352 0.8262 0.8874648'
y = '0 31858942.74'
z = '5493.43832 7183.727034 29157.48031 34228.34646 37608.92388 40144.35696 41412.07349 42257.21785 41834.64567 39721.78478 37608.92388 33805.77428 28312.33596 4225.721785 2535.433071 5041.338583 6592.519685 26757.87402 31411.41732 34513.77953 36840.55118 38003.93701 38779.52756 38391.73228 36452.75591 34513.77953 31023.62205 25982.28346 3877.952756 2326.771654'
scale_factor = 1
axis = 1
[]
[average_power_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 24264.05646 24264.05646'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[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
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.2
axial_power_profile = axial_power_profile
rod_ave_lin_pow = fraction_history
pellet_diameter = 0.005588
execute_on = timestep_begin
pellet_inner_diameter = 0.001397
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[conductivity]
type = MaterialRealAux
property = thermal_conductivity
variable = thermal_cond
block = pellet
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 0.151e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 0.151e6
inlet_massflux = 1687.43
rod_diameter = 6.858e-3
rod_pitch = 1.7e-2
linear_heat_rate = fraction_history
axial_power_profile = axial_power_profile
coolant_material = sodium
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
diff_coeff_option = TURNBULL_D1_4D2_4D3
grain_radius_const = 10e-06
bubble_gb_limit = 1.0e+11
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fast_neutron_flux]
type = GenericFunctionMaterial
block = clad
prop_names = fast_neutron_flux
prop_values = fast_neutron_flux_function
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-5
fixed_point_rel_tol = 1e-6
fixed_point_max_its = 1
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-4
start_time = -200
n_startup_steps = 1
end_time = 31858942.74
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = fraction_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.9144 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[VectorPostprocessors]
[clad_surface]
type = LineValueSampler
variable = temp
start_point = '3.4e-3 3.24e-3 0.0'
end_point = '3.4e-3 1.97 0.0'
num_points = 200
sort_by = y
outputs = line_plot
[]
[fuel_radial_temperature_SampleH_master]
type = LineValueSampler
variable = temp
start_point = '6.985e-4 0.432 0.0'
end_point = '2.794e-3 0.432 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_SampleJ_master]
type = LineValueSampler
variable = temp
start_point = '6.985e-4 0.686 0.0'
end_point = '2.794e-3 0.686 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_SampleL_master]
type = LineValueSampler
variable = temp
start_point = '6.985e-4 0.913 0.0'
end_point = '2.794e-3 0.913 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_SampleH_master]
type = LineValueSampler
variable = pore
start_point = '6.985e-4 0.432 0.0'
end_point = '2.794e-3 0.432 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_SampleJ_master]
type = LineValueSampler
variable = pore
start_point = '6.985e-4 0.686 0.0'
end_point = '2.794e-3 0.686 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_SampleL_master]
type = LineValueSampler
variable = pore
start_point = '6.985e-4 0.913 0.0'
end_point = '2.794e-3 0.913 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[line_plot]
type = CSV
execute_on = 'FINAL'
time_step_interval = 1
file_base = 1d
create_final_symlink = true
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = TIMESTEP_END
sub_cycling = false
positions_file = positions.txt
input_files = 'fftf_fo2_L09_sub.i'
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
check_multiapp_execute_on = true
execute_on = SAME_AS_MULTIAPP
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
execute_on = SAME_AS_MULTIAPP
[]
[]
[Debug]
show_var_residual_norms = true
[]
(examples/accident_tolerant_fuel/u3si2_zircaloy/u3si2_zircaloy.i)
initial_fuel_density = 11590.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
# Import mesh file
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = u3si2_zircaloy_smeared.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.0
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_inner_wall = 5
clad_outer_wall = 2
clad_top = 3
clad_bottom = 1
pellet_exteriors = 8
[]
[]
[AuxVariables]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[densification]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
order = CONSTANT
family = MONOMIAL
[]
[gaseous_swell]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e4 1e8'
y = '0 2.5e4 2.5e4'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0 1e8'
y = '6.537e-3 1 1'
scale_factor = 15.5e6
[]
[mass_flux_func]
type = PiecewiseLinear
x = '-200 0 1e8'
y = '3800 3800 3800'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
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]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[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
block = pellet_type_1
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
RPF = RPF
fuel_type = U3Si2
[]
[]
[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
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = total_hoop_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[oxide]
type = MaterialRealAux
variable = oxide_thickness
property = oxide_scale_thickness
boundary = 2
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
block = clad
[]
[densfication]
type = MaterialRealAux
property = densification
variable = densification
block = pellet_type_1
[]
[solid_swell]
type = MaterialRealAux
property = solid_swelling
variable = solid_swell
block = pellet_type_1
[]
[gaseous_swell]
type = MaterialRealAux
property = gaseous_swelling
variable = gaseous_swell
block = pellet_type_1
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
normal_smoothing_distance = 0.1
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = pressure_ramp # Pa
inlet_massflux = mass_flux_func # kg/m^2-sec
rod_diameter = 9.4996e-3 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = SilicideFuelThermal
block = pellet_type_1
thermal_conductivity_model = WHITE
silicon_mole_fraction = 0.4
temperature = temp
[]
[fuel_elasticity_tensor]
type = U3Si2ElasticityTensor
block = pellet_type_1
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
block = pellet_type_1
tangent_operator = elastic
inelastic_models = 'fuel_creep'
[]
[fuel_creep]
type = U3Si2CreepUpdate
block = pellet_type_1
temperature = temp
[]
[fuel_thermal_expansion]
type = U3Si2ThermalExpansionEigenstrain
block = pellet_type_1
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = U3Si2VolumetricSwellingEigenstrain
block = pellet_type_1
gaseous_swelling_type = U3SI2FG
temperature = temp
burnup_function = burnup
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = ZryThermal
temperature = temp
block = clad
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 7.5e10
poissons_ratio = 0.3
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep clad_plasticity'
relative_tolerance = 1e-5
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
relative_tolerance = 1e-5
max_inelastic_increment = 1e-4
zircaloy_material_type = stress_relief_annealed
[]
[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_plasticity]
type = ZryPlasticityUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
relative_tolerance = 1e-5
cold_work_factor = 0.5
plasticity_model_type = MATPRO
zircaloy_alloy_type = 4
[]
[fission_gas_behavior]
type = U3Si2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
saturation_coverage = 0.5
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6511.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 4.1783e-3
clad_outer_radius = 4.7498e-3
normal_operating_temperature_model = epri_kwu_ce
temperature = temp
fast_neutron_flux = fast_neutron_flux
use_coolant_channel = true
oxygen_weight_fraction_initial = 0.0012
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-5
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 1e8
dtmax = 1e6
dtmin = 1e-3
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = 3e20
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
timestep_limiting_postprocessor = material_timestep
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[avg_fuel_surface]
type = SideAverageValue
boundary = 10
variable = temp
[]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[_dt]
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186
[]
[average_burnup]
type = ElementAverageValue
block = pellet_type_1
variable = burnup
[]
[oxide_thickness]
type = ElementExtremeValue
block = clad
variable = oxide_thickness
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
color = false
csv = true
print_linear_residuals = true
[console]
type = Console
max_rows = 25
[]
[]
(test/tests/sifgrs/u3si2/polypole2.i)
# This input is used to test polypole2 with U3Si2Sifgrs
[Mesh]
[gen]
type = ExamplePatchMeshGenerator
dim = 3
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = U3Si2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
ig_diff_algorithm = POLYPOLE2
ig_bubble_model = NUCLEATION_RESOLUTION
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 1
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[]
[Outputs]
csv = true
exodus = true
[]
(test/tests/ifba_he_production/ifba_examp_template.i)
#
# 2-D RZ One Pellet Test - Coarse mesh example of IFBA layer
#
# This is an input template for a fast running example using the IFBA
# postprocessor. All of the possible ways to specify the IFBA layer are run
# using this template in a regression test format.
#
# The expected ouputs for each test depends on the model equation being used
# to calculate the He produced. For the burnup based equation, the He moles
# released at the end of the calculation is 1.4897e-6. A hand calculation is
# reproduced in the Excel spreadsheet IFBA_He_Calc included in the test
# directory. The burnup equation result computed for the same inputs is
# 1.4902e-6.
#
# Using the FRAPCON equation calculates a rate of He production, so comparing
# the first couple of time steps of the simulation to the hand calculation is
# more straightforward. Comparing the BISON results to the hand calculation is
#
# Time(s) He Prod (BISON) He Prod (Excel)
# 1000 1.01465e-10 1.01465e-10
# 3000 7.10250e-10 7.18769e-10
#
initial_fuel_density = 10431.0 #95% TD (TD = 10980)
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
temperature = temp
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 1
nx_p = 1
nx_c = 1
ny_cu = 1
ny_c = 1
ny_cl = 1
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[grain_radius]
block = '3'
initial_condition = 5e-6
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 20e3 # 20 kW/m peak power.
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = 'fuel_thermal_strain'
[]
[clad]
block = 1
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = 'clad_thermal_strain'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
value = 5.3548e+14
fission_rate_function = power_history
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = 'fis_gas_released he_prod'
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
released_gas_types = 'Kr Xe;
He'
released_fractions = '0.153 0.847;
1'
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Clad_Temp]
type = DirichletBC
variable = temp
boundary = '2'
value = 580.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
refab_pressure = 0.50e6
startup_time = 0.0
material_input = 'fis_gas_released he_prod'
output_initial_moles = initial_moles
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 298
eigenstrain_name = 'fuel_thermal_strain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[fclad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 298
eigenstrain_name = 'clad_thermal_strain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 2.5e6
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e5 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01 #BWR change: length of fuel stack in meters (5*pellet height)
[]
[he_prod]
type = IFBAHeProduction
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup burnup he_prod interior_temp plenum_pressure'
[]
[outfile]
type = CSV
delimiter = ' '
[]
[]
(test/tests/triso_failure/ad_ipyc_characteristic_strength.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DFiveLayerMeshGenerator
elem_type = EDGE3
kernel_radius = 2.485e-4
buffer_thickness = 9.4e-5
IPyC_thickness = 4.1e-5
SiC_thickness = 3.6e-5
OPyC_thickness = 4.0e-5
kernel_mesh_density = 6
buffer_mesh_density = 6
IPyC_mesh_density = 6
SiC_mesh_density = 8
OPyC_mesh_density = 6
[]
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19 # units of fissions/m**3
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '100 100'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
use_automatic_differentiation = true
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[]
[heat]
type = ADHeatConduction
variable = temp
[]
[heat_source]
type = ADNeutronHeatSource
variable = temp
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
use_automatic_differentiation = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = ADDirichletBC
variable = temp
boundary = exterior
value = 1346.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = ADPressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
# apply gas pressure on buffer and IPyC boundaries
[PlenumPressure]
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
use_automatic_differentiation = true
[]
[]
[]
[Materials]
[max_principal_stress]
type = ADRankTwoInvariant
property_name = max_principal_stress
rank_two_tensor = stress
invariant = MaxPrincipal
[]
[flux]
type = ADFastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = ADUO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ADComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = ADPyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temp
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = ADPyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[PyC_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[SiC_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[fuel_thermal]
type = ADUO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = ADStrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temp]
type = ADHeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = ADStrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_temp]
type = ADHeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = ADStrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temp]
type = ADHeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = ADStrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength_SiC]
type = ADGenericConstantMaterial
prop_values = '9640000'
block = SiC
prop_names = 'characteristic_strength'
[]
[characteristic_strength_PyC]
type = ADPyCCharacteristicStrength
temperature = temp
X = 1.02
flux_conversion_factor = 0.85
block = 'IPyC OPyC'
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-8
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ADElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temp
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temp
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = ADWeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
[]
[failure_indicator_SiC]
type = ADWeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_SiC
[]
[strength_IPyC]
type = ADWeibullEffectiveMeanStrength
block = IPyC
weibull_modulus = 6
[]
[failure_indicator_IPyC]
type = ADWeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_IPyC
[]
[strength_OPyC]
type = ADWeibullEffectiveMeanStrength
block = OPyC
weibull_modulus = 6
[]
[failure_indicator_OPyC]
type = ADWeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_OPyC
[]
[failure_indicator_SiC_crackedIPyC]
type = ADWeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
[]
[failure_indicator_SiC_crackedOPyC]
type = ADWeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
[]
[triso_failure]
type = TRISOFailureEvaluation
IPyC_failure = failure_indicator_IPyC
OPyC_failure = failure_indicator_OPyC
SiC_failure = failure_indicator_SiC
SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
SiC_failure_crackedOPyC = failure_indicator_SiC_crackedOPyC
[]
[characteristic_strength]
type = ADElementExtremeMaterialProperty
mat_prop = characteristic_strength
block = IPyC
value_type = max
[]
[flence]
type = ADElementExtremeMaterialProperty
mat_prop = fast_neutron_fluence
block = IPyC
value_type = max
[]
[]
[Outputs]
file_base = triso_ipyc_characteristic_strength_out
print_linear_residuals = true
time_step_interval = 1
csv = true
[]
(test/tests/sifgrs/uo2/fast_mox.i)
# This test is for the application of Sifgrs to FBR MOX fuel.
# A lower limit for the grain-boundary bubble number density of 1.0e+11 bubbles/m2 is applied, which is recommended for FBR MOX simulations.
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '2000'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e20'
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 2000
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[deltav_v0_bubble_GB]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 2.5
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[gbswe]
type = MaterialRealAux
variable = deltav_v0_bubble_GB
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
temperature = T
fission_rate = fission_rate
initial_porosity = 0.0
grain_radius_const = 8.0e-6
diff_coeff_option = TURNBULL_D1_4D2_4D3
bubble_gb_limit = 1.0e+11 #recommended value for fast MOX fuels
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 100
dt = 19800.
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
execute_on = linear
[]
[bubble_num_grain_boundary]
type = ElementalVariableValue
variable = bbl_bdr_2
elementid = 0
[]
[swelling_grain_boundary]
type = ElementalVariableValue
variable = deltav_v0_bubble_GB
elementid = 0
[]
[]
[Outputs]
csv = true
[]
(examples/TRISO/full_particle/1D/full_particle_1D.i)
initial_fuel_density = 10810.0
[GlobalParams]
density = ${initial_fuel_density}
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[temperature]
initial_condition = 1346.0
[]
[]
[AuxVariables]
[fission_rate]
block = fuel
[]
[burnup]
block = fuel
[]
[grain_radius]
initial_condition = 5.0e-6
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = fuel
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[buffer]
block = buffer
add_variables = true
strain = FINITE
eigenstrain_names = 'buffer_thermal_strain buffer_eigenstrain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[IPyC]
block = IPyC
add_variables = true
strain = FINITE
eigenstrain_names = 'IPyC_eigenstrain IPyC_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[SiC]
block = SiC
add_variables = true
strain = FINITE
eigenstrain_names = 'SiC_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[OPyC]
block = OPyC
add_variables = true
strain = FINITE
eigenstrain_names = 'OPyC_eigenstrain OPyC_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy strain_yz strain_xz'
[]
[]
[Functions]
[fission_rate]
type = ParsedFunction
expression = 7.75e19
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
[]
[]
[BCs]
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1346.0
[]
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure] # apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# couplings to post processor
output_initial_moles = initial_moles
temperature = ave_temperature_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18 # n/m^2-sec
[]
[fuel_thermal]
type = UO2Thermal
block = fuel
temperature = temperature
thermal_conductivity_model = FINK_LUCUTA
initial_porosity = 0.0
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.0e8
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = fuel_thermal_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius = grain_radius
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2.0e8
poissons_ratio = 0.345
[]
[buffer_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = buffer
[]
[buffer_temperature]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_density]
type = StrainAdjustedDensity
strain_free_density = 1000.0
block = buffer
[]
[buffer_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = buffer
thermal_expansion_coeff = 5.5e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = buffer_thermal_strain
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC buffer'
[]
[buffer_irraditation]
type = PyCIrradiationEigenstrain
block = buffer
pyc_type = buffer
eigenstrain_name = buffer_eigenstrain
[]
[IPyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[IOPyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
temperature = temperature
[]
[IOPyC_thermal]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[IOPyC_density]
type = StrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[IPyC_densification]
type = PyCIrradiationEigenstrain
block = IPyC
pyc_type = dense
eigenstrain_name = IPyC_eigenstrain
[]
[IPyC_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = IPyC
thermal_expansion_coeff = 5.5e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = IPyC_thermal_strain
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = SiC
[]
[SiC_temperature]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_density]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[SiC_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = SiC_thermal_strain
[]
[OPyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = OPyC
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[OPyC_densification]
type = PyCIrradiationEigenstrain
block = OPyC
pyc_type = dense
eigenstrain_name = OPyC_eigenstrain
[]
[OPyC_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = OPyC
thermal_expansion_coeff = 5.5e-6
temperature = temperature
stress_free_temperature = 1346.0
eigenstrain_name = OPyC_thermal_strain
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 3.10176e7
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temperature_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temperature]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temperature]
type = TimeIntegratedPostprocessor
value = avg_surface_temperature
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temperature
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[max_xx_IPyC]
type = ElementExtremeValue
variable = stress_xx
block = IPyC
[]
[max_yy_IPyC]
type = ElementExtremeValue
variable = stress_yy
block = IPyC
[]
[min_zz_IPyC]
type = ElementExtremeValue
variable = stress_zz
block = IPyC
value_type = min
[]
[max_xx_SiC]
type = ElementExtremeValue
variable = stress_xx
block = SiC
[]
[max_yy_SiC]
type = ElementExtremeValue
variable = stress_yy
block = SiC
[]
[min_zz_SiC]
type = ElementExtremeValue
variable = stress_zz
block = SiC
value_type = min
[]
[max_xx_OPyC]
type = ElementExtremeValue
variable = stress_xx
block = OPyC
[]
[max_yy_OPyC]
type = ElementExtremeValue
variable = stress_yy
block = OPyC
[]
[min_zz_OPyC]
type = ElementExtremeValue
variable = stress_zz
block = OPyC
value_type = min
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
exodus = false
csv = true
perf_graph = true
[chkfile]
type = CSV
execute_on = Final
show = 'max_xx_IPyC max_yy_IPyC min_zz_IPyC max_xx_SiC max_yy_SiC min_zz_SiC'
[]
[]
(test/tests/sifgrs/uo2/first_stage.i)
# @Requirement F2.40
# This test is for evaluating the first stage (i.e., the intra-granular diffusion calculation) of the Sifgrs fission gas behavior model.
# The first stage is isolated by setting the fractional bubble coverage at grain boundary saturation to zero (saturation_coverage = 0). Under this condition (i.e. gas reaching the grain boundaries goes instantaneously to the plenum), the ratio of fission gas released to fission gas generated calculated by the model should compare very closely with the analytical expression for fractional fission gas release fraction from the grains published by Speight (Nuclear Science and Engineering 37, 180, 1969). The Speight equation for fission gas release fraction (released/produced) is
#
# parameters:
# n and no are summation integers
# a = grain radius in m
# pi = the number pi 3.14159...
# D = effective diffusion coefficient in m^2/s where D includes the effects of intragranular trapping and resolution (see White, JNM 118, 1, 1983, and the
# fgr_diffusion_coefficient_test in BISON for a description)
# t = time in seconds
#
# 6*a^2
# f = 1 - sum(n=1, to no) ---------------- * {1 - exp -[D*n^2*pi^2*t/a^2]}
# pi^4 * D*t*n^4
#
# For no = 1, D = 4.123e-19 m^2/s, a = 1e-5 m, t = 1e6 s, f = 0.596.
# For no = 50, and the same parameters defined above, f = 0.1388
#
# With the output from this test, if one calculates fission gas released / fission gas produced at
# t = 1.e+06, the result should be 0.1032, which compares well with the analytical solution from Speight.
#
# See also the sheet sifgrs_first_stage of the attached excel file (regression_tests_sifgrs.xlsx).
# Check of fission gas produced
# beta = rate of gas production per unit volume by fission
# beta * time * volume = gas produced
# The following parameters are used to calculate beta
#
# t = time in seconds = 5e7
# Avogadros number = 6.023e23 atoms/mol
# FY = fractional yield = fraction of fission gas atoms per fission = 0.3017 atoms/fission
# Y = yield = FY/Avogadros number = atoms/fission / atoms/mol to give mols/fission
# F = fission rate = fissions/m^3*s = 2.5e19
# beta = F*Y = fissions/m^3s * mols/fission = mols/m^3*s
# gas produced = beta * time * volume
# For this test problem, volume = (0.01m)^3 = 1e-6m^3 = volume of single finite element in this problem
#
# Y = 0.3017/6.023e23 = 5.0091e-25 mol/fission
# beta = 2.5e19*5.009e-25 = 1.25e-5 mol/m^3s
# gas produced = 1.25e-5*5e7*1e-6 = 6.26e-4 mols
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[FRA]
type = MaterialRealAux
variable = fract_FGR_analytical
property = fract_FGR_analytical
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
testing_output = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[]
[Outputs]
exodus = true
[csv]
type = CSV
[]
[]
(assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-1kW_action.i)
################################################################################
#
# Description: LOCA MT-4 Test with constant power level of 1.1 kW/m
#
#
# External files:
# axial peaking factor file MT4_axial_peaking.csv
#
################################################################################
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
temperature = temperature
[]
[Problem]
type = ReferenceResidualProblem
group_variables = 'disp_x disp_y'
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 6.1e-4
pellet_mesh_density = customize
ny_p = 100
nx_c = 4
nx_p = 12
pellet_outer_radius = .00413
ny_cu = 3
ny_c = 100
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.66
ny_cl = 3
clad_top_gap_height = 0.18613
clad_gap_width = 7.5e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 253
[]
[AuxVariables]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[hmode]
order = CONSTANT
family = MONOMIAL
[]
[htype]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 110'
y = '1.1e3 1.1e3'
[]
[hmode_function]
type = PiecewiseConstant
x = '0 57 110'
y = '9 10 10'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = MT4_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '0 110'
y = '0.28 0.28'
scale_factor = 1e6
[]
[temp_func]
type = ParsedFunction
expression = '-24.096*y*y+152.47*y+437.81'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors' # W/m
[]
[]
[AuxKernels]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = hmode
boundary = 2
[]
[htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = htype
boundary = 2
[]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
block = clad
execute_on = timestep_end
[]
[burst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
# TODO: Have StandardLWRFuelRodOutputs create this when the feature in issue #1054 is
# developed.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
normalize_penalty = true
model = frictionless
# model = coulomb
formulation = penalty
# friction_coefficient = 1.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.0 # Pa
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 9.3e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temperature
inlet_temperature = 311 # K
inlet_pressure = 0.28e6 # Pa
# inlet_massflux = massfluxfunc # kg/m^2-sec
rod_diameter = 0.00963 # m
rod_pitch = 1.275e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
heat_transfer_mode = hmode_function
heat_transfer_coefficient = 0.0000001 #W/m^2-K
# heat_transfer_mode = 10
htc_correlation_type = 1
flooding_time = 57.0
flooding_rate = 0.127 # m/s
initial_temperature = 1140 # K
initial_power = 1.628 # kW/m
blockage_ratio = 0.0 #
fuel_stack_length = 3.66 # m
reflooding_model = 1
compute_enthalpy = false
[]
[]
[NuclearMaterials]
fission_operation = LOCA
add_variables = true
physics = 'Mechanics Thermal'
temperature_function = 'temp_func'
stress_free_temperature = temperature
extra_vector_tags = 'ref'
strain = FINITE
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
elastic_strain_yy strain_xx strain_yy strain_zz hoop_stress'
[UO2]
[pellet]
block = pellet
incremental = true
additional_generate_output = 'hydrostatic_stress'
uo2_models = 'Burnup Elastic Swelling '
automatic_eigenstrain_names = true
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
isotopes = 'U235 U238'
isotope_fractions = '0.0293 0.9707'
density = 10431 #
initial_grain_radius = 7.8e-6
[]
[]
[ZirconiumAlloy]
[clad]
block = clad
incremental = true
additional_generate_output = 'creep_strain_xx creep_strain_yy
creep_strain_xy creep_strain_zz elastic_strain_xx elastic_strain_zz hoop_creep_strain'
automatic_eigenstrain_names = true
failure_criterion = combined_overstress_and_plastic_instability
cladding_models = 'Elastic Creep ThermalExpansion ZrPhase
ZryCladdingFailure'
[]
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0.0
end_time = 110
dtmax = 5
dtmin = 0.00001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 0.01
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temperature
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[max_betaph_fract]
type = ElementExtremeValue
block = clad
value_type = max
variable = fract_beta_phase
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
execute_on = timestep_end
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
fission_rate = fission_rate
variable = temperature
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.66 # rod height
execute_on = timestep_end
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_creep_rate]
type = ElementExtremeValue
block = clad
value_type = max
variable = creep_rate_aux
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
temperature = temperature
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 40
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temperature'
show_var_residual_norms = true
[]
(test/tests/sifgrs/uo2/athermal_release.i)
# This is a test for the athermal release capability included in the Sifgrs fission gas behavior model.
# The model of B.J. Lewis (JNM 148, 28, 1987) is adopted for calculating the contribution to fission gas
# release (FGR) arising from the surface-fission release mechanisms (recoil and knockout).
# Since athermal release depends on the total pellet surface area (geometrical surface + cracked surface),
# an estimation of the number and length of cracks for each pellet is introduced, based on concepts from
# M. Oguma (NED 76, 35, 1983) and D.R. Olander (Fundamental aspects of nuclear reactor fuel elements,
# Berkeley, 1976). For this purpose, the subprograms PelletIdAux and PelletBrittleZone are employed.
# The athermal release model can be activated by specifying ath_model = true. It is also necessary to
# specify the name of the linear power function (see below).
# A single pellet - constant power problem is considered for this test.
# In order to isolate the athermal release, the concurrent thermal gas release is not calculated
# (by setting the fractional bubble coverage at grain boundary saturation to infinite,
# i.e., saturation_coverage = 1.e+20).
# Also, the fission gas swelling is not calculated in this test. The results demonstrate that
# the athermal release model provides a contribution to FGR independent of thermal release and given
# by an approximately constant fraction of the generated gas, released upon creation due to the recoil
# and knockout mechanisms.
initial_fuel_density = 10417.
[GlobalParams]
density = ${initial_fuel_density}
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11
[]
[Mesh]
coord_type = RZ
patch_size = 1000
[mesh]
type = FileMeshGenerator
file = single_pellet_2d.e
[]
[]
[Variables]
[temperature]
initial_condition = 300.
[]
[]
[AuxVariables]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 2
[]
[crack_length]
order = CONSTANT
family = MONOMIAL
[]
[gas_ath_3]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = linpow_ath_test.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = peaking_factors.csv
scale_factor = 1
axis = 1
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = 2
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = 2
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 12
num_axial = 9
a_upper = 0.01496
a_lower = 0.00226
fuel_inner_radius = 0.
fuel_outer_radius = 0.005305
fuel_volume_ratio = 1.
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[pelletid]
type = PelletIdAux
block = 2
variable = pellet_id
a_lower = 0.00226
a_upper = 0.01496
number_pellets = 1
execute_on = initial
[]
[cracklen]
type = MaterialRealAux
variable = crack_length
property = crack_length
[]
[fgath]
type = MaterialRealAux
variable = gas_ath_3
property = gas_concentration_athermal_release_volume
[]
[]
[BCs]
[convective_clad_surface]
type = ConvectiveFluxBC
boundary = '10'
variable = temperature
rate = 7500.
initial = 300.
final = 515.5
duration = 1.0e+04
[]
[top_pellet]
variable = temperature
value = 0.
type = NeumannBC
boundary = '21'
[]
[bottom_pellet]
variable = temperature
value = 0.
type = NeumannBC
boundary = '20'
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 2
thermal_conductivity_model = FINK_LUCUTA
initial_porosity = 0.0
temperature = temperature
burnup_function = burnup
[]
[density2]
type = ParsedMaterial
block = 2
property_name = density
expression = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = 2
temperature = temperature
burnup_function = burnup
saturation_coverage = 1.e+20
ath_model = true
pellet_id = pellet_id
pellet_brittle_zone = pbz
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[UserObjects]
[pbz]
type = PelletBrittleZone
block = 2
pellet_id = pellet_id
temperature = temperature
pellet_radius = 0.005305
a_lower = 0.00226
a_upper = 0.01496
number_pellets = 1
execute_on = 'initial linear'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_max_its = 100
l_tol = 1.e-04
nl_max_its = 15
nl_rel_tol = 1.e-8
nl_abs_tol = 1.e-8
start_time = 0.
end_time = 1.e+08
num_steps = 5000
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.e+06
time_t = '0 10000 '
time_dt = '2.e+03 1.e+07'
[]
[]
[Postprocessors]
[gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 2
[]
[delta_gas_generated]
type = ElementIntegralMaterialProperty
mat_prop = delta_gas_concentration_generated_total
block = 2
outputs = csv
[]
[gas_intragranular]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_intra_total
block = 2
outputs = csv
[]
[gas_intergranular]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_GB_bubble_volume
block = 2
outputs = csv
[]
[gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 2
[]
[gas_released_athermal]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_athermal_release_volume
block = 2
outputs = csv
[]
[gas_released_total]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_release_total
block = 2
outputs = csv
[]
[]
[Outputs]
exodus = true
csv = true
[]
(examples/2D-RZ_rodlet_10pellets/smeared_cracking/SmearedCracking.i)
# This model is a higher order, smeared 10 pellet fuel stack (pellet).
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 10
pellet_height = 0.01186
pellet_outer_radius = 4.1e-3
pellet_mesh_density = coarse
clad_mesh_density = coarse
clad_gap_width = 160.0e-6
clad_thickness = 0.56e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 2.6e-2
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e08'
y = '0 2.5e4 2.5e04'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
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]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[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
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
RPF = RPF
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.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
variable = grain_radius
temperature = temp
execute_on = linear
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[elastic_stress]
type = ComputeSmearedCrackingStress
block = pellet
cracking_stress = 1.68e8
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temp
fission_rate = fission_rate
initial_grain_radius = 10e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.035
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[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
zircaloy_material_type = stress_relief_annealed
[]
[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
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
verbose = false
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 1.0e8
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[center_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 2579 # mesh dependent, at (0.0041, 0.0744)
[]
[center_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 2579 # mesh dependent, at (0.0041, 0.0744)
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
# [VectorPostprocessors]
# [clad]
# type = NodalValueSampler
# variable = disp_x
# boundary = 2
# sort_by = y
# outputs = 'outfile_clad_radial_displacement'
# []
# [pellet]
# type = NodalValueSampler
# variable = disp_x
# boundary = 10
# sort_by = y
# outputs = 'outfile_fuel_radial_displacement'
# []
# []
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
# [outfile_clad_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
# [outfile_fuel_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
[]
(test/tests/sifgrs/uo2/second_stage.i)
# @Requirement F2.40
# This test is for evaluating the second stage of the FGR process in the Sifgrs fission gas behavior model. The second stage involves the calculation of the gas behavior at grain boundaries and release to the fuel rod free volume.
# Sifgrs calculates the grain-boundary gas bubble kinetics, including bubble growth and coalescence driven by gas atoms and vacancies inflow at the bubbles, and release of a fraction of the grain-boundary gas after grain-boundary saturation. The saturation condition reads Fc = 0.5, with Fc being the fractional coverage of grain boundary surface by bubbles.
# This test is aimed at demonstrating how FGR commences upon attainment of the saturation condition (which occurs for this case after 8E+06 s), and how the saturation condition Fc = 0.5 is maintained from that moment on (see also attached file regression_tests_sifgrs.xlsx).
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1400'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
initial_condition = 1400
[]
[]
[AuxVariables]
[fission_rate]
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = 'initial linear'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
block = 1
temperature = T
fission_rate = fission_rate
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
end_time = 5e7
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[]
[Outputs]
exodus = true
[]
(test/tests/sifgrs/uo2/option_base.i)
# This base input file is used to test the various input model options
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
[]
[]
[Problem]
solve = false
[]
[AuxVariables]
[fission_rate]
initial_condition = 2.5e19
[]
[T]
initial_condition = 1000
[]
[]
[AuxKernels]
[tempaux]
type = ParsedAux
variable = T
use_xyzt = true
expression = '1200 + 1000 * t / 50e6'
execute_on = 'TIMESTEP_BEGIN'
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
ig_diff_algorithm = POLYPOLE2
[]
[]
[Executioner]
type = Transient
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[]
[Outputs]
csv = true
[]
(examples/2D-RZ_rodlet_10pellets/2D_discrete_finiteStrain_mortar/2D_discrete_finiteStrain_mortar.i)
# This model is a linear element, 10 discrete fuel pellet stack (pellet_type_1) with a fine mesh.
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
family = LAGRANGE
order = FIRST
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'temperature disp_x disp_y'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
# Import mesh file
patch_update_strategy = always
patch_size = 100 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[file]
file = ../fine10_rz.e
type = FileMeshGenerator
[]
[]
[Variables]
# Define dependent variables and initial conditions
[temperature]
initial_condition = 580.0 # set initial temp to coolant inlet
[]
[disp_x]
block = 'pellet_type_1 clad'
[]
[disp_y]
block = 'pellet_type_1 clad'
[]
[]
[AuxVariables]
# Define auxilary variables
[pid]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
# Define functions to control power and boundary conditions
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ../powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = ../peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
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
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]
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
block = 'pellet_type_1 clad'
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet_type_1 # fission rate applied to the fuel (block 2) only
burnup_function = burnup
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = 5
secondary = 10
c_normal = 1e+11
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[pidaux]
type = ProcessorIDAux
variable = pid
[]
[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 = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[BCs]
# Define boundary conditions
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temperature
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 = temperature
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
diametral_gap =160.0e-6
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 = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temperature
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 = temperature
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 = temperature
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 = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temperature
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-6 NONZERO 1e-13'
snesmf_reuse_base = false
line_search = 'none'
l_max_its = 20
l_tol = 8e-3
nl_max_its = 60
nl_rel_tol = 1e-4
nl_abs_tol = 1e-12 # LM
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
automatic_scaling = true
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 50
iteration_window = 2
growth_factor = 2
cutback_factor = .5
[]
[]
[Postprocessors]
[contact_evolution]
type = NodalVariableValue
variable = mechanical_normal_lm
nodeid = 4533
[]
[temp_evolution]
type = NodalVariableValue
variable = temperature
nodeid = 4533
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
#[centerline_temp]
# type = SideAverageValue
# boundary = 12
# variable = temp
# execute_on = linear
#[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temperature
execute_on = 'initial linear'
[]
[ave_fuel_temp]
type = ElementAverageValue
block = pellet_type_1
variable = temperature
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[_dt] # time step
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet_type_1
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[effective_creep_strain]
type = ElementAverageValue
block = clad
variable = effective_creep_strain
[]
[effective_creep_strain_rate]
type = ElementAverageValue
block = clad
variable = creep_strain_rate
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[temperature_post]
type = NodalValueSampler
variable = temperature
boundary = '10'
sort_by = y
[]
[contact_post]
type = NodalValueSampler
variable = mechanical_normal_lm
boundary = '10'
sort_by = y
[]
[disp_x]
type = NodalValueSampler
variable = disp_x
boundary = '10'
sort_by = y
[]
[disp_y]
type = NodalValueSampler
variable = disp_y
boundary = '10'
sort_by = y
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(test/tests/sifgrs/uo2/ad_swelling_porosity.i)
# This test is for the fuel swelling and porosity computation in the Sifgrs fission gas behavior model for UO2.
# As complementary to the fission gas release process, the fission gas swelling is related to gas retention in the fuel in the form of bubbles. Through a direct description of the gas bubble development, the fission gas swelling and release are modeled as inherently coupled processes, on a physical basis. Only the fission gas swelling due to grain-face bubbles is considered.
# In a comprehensive treatment of fission gas release and fuel swelling, Sifgrs also incorporates empirical models for the swelling due to solid fission products and the fuel densification.
# Moreover, the different contributions to fuel porosity, namely, those due to fabrication pores, gas bubbles (thus associated with fission gas swelling) , and sintering (densification), are computed consistently with the swelling calculations. Then, the fuel total porosity in each mesh location can be tracked (auxkernel PorosityAuxUO2), and considered in the computation of other relevant material properties like the fuel thermal conductivity (material model UO2Thermal).
# This test aims at demonstrating the above model capabilities. The considered case involves a single-element cubic domain, constant temperature (1400 K) and fission rate (1e19 f/(m**3s)), and a irradiation time of 1e8 s. The Sifgrs model is adopted for calculating the fission gas release and fuel swelling. Starting from a typical as-fabricated value of 5%, the fuel porosity evolves consistently with the swelling. The fuel thermal conductivity is calculated as coupled with porosity, which allows taking into account the conductivity degradation due to progressive increase of gaseous porosity (see also the attached file regression_tests_sifgrs.xlsx).
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = cube_111.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1400.'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[temp]
initial_condition = 1400.
[]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[fission_rate]
[]
[burnup]
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.05
[]
[density]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_bubble_GB]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_sl]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_dn]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_swe]
order = CONSTANT
family = MONOMIAL
[]
[fabrication_porosity]
order = CONSTANT
family = MONOMIAL
[]
[gaseous_porosity]
order = CONSTANT
family = MONOMIAL
[]
[sintering_porosity]
order = CONSTANT
family = MONOMIAL
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
use_automatic_differentiation = true
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_volumetric_strain'
volumetric_locking_correction = false
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
[]
[]
[AuxKernels]
[frate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[brnp]
type = BurnupAux
variable = burnup
fission_rate = fission_rate
density = 10417.
execute_on = 'initial timestep_begin'
[]
[por]
type = ADPorosityAuxUO2
variable = porosity
execute_on = 'initial linear'
[]
[rho]
type = ADMaterialRealAux
variable = density
property = density
execute_on = 'initial linear'
[]
[dvv0bd]
type = ADMaterialRealAux
variable = deltav_v0_bubble_GB
property = deltav_v0_bubble_GB
[]
[dvv0sl]
type = ADMaterialRealAux
variable = deltav_v0_sl
property = solid_swelling
[]
[dvv0dn]
type = ADMaterialRealAux
variable = deltav_v0_dn
property = densification
[]
[dvv0swe]
type = ADMaterialRealAux
variable = deltav_v0_swe
property = volumetric_swelling_strain
[]
[fabpor]
type = ADMaterialRealAux
variable = fabrication_porosity
property = fabrication_porosity
execute_on = 'initial linear'
[]
[gaspor]
type = ADMaterialRealAux
variable = gaseous_porosity
property = gaseous_porosity
[]
[sinpor]
type = ADMaterialRealAux
variable = sintering_porosity
property = sintering_porosity
[]
[thcond]
type = ADMaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
execute_on = 'initial linear'
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = temp
function = Temp_func
boundary = 1
[]
[x_disp]
type = ADDirichletBC
variable = disp_x
value = 0
boundary = 1
[]
[y_disp]
type = ADDirichletBC
variable = disp_y
value = 0
boundary = 2
[]
[z_disp]
type = ADDirichletBC
variable = disp_z
value = 0
boundary = 3
[]
[]
[Materials]
[fuel_thermal]
type = ADUO2Thermal
temperature = temp
burnup = burnup
initial_porosity = 0.05
porosity = porosity
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[fuel_elastic_stress]
type = ADComputeFiniteStrainElasticStress
[]
[fuel_volumetric_swelling]
type = ADUO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
temperature = temp
burnup = burnup
initial_fuel_density = 10417.0
eigenstrain_name = fuel_volumetric_strain
[]
[density]
type = ADStrainAdjustedDensity
strain_free_density = 10417.0
[]
[fission_gas_release_and_swelling]
type = ADUO2Sifgrs
temperature = temp
fission_rate = fission_rate
burnup = burnup
initial_porosity = 0.05
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1.e-04
nl_abs_tol = 1.e-05
nl_rel_tol = 1.e-05
start_time = 0.
num_steps = 100
dt = 1.e+06
end_time = 1.e+08
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
[]
[]
[Outputs]
[out]
type = Exodus
[]
[]
(examples/multiapp/pin1.i)
## In this example the multiapp system is called to run another BISON simulation.
## (input1.i calls input2.i) An application of this might be multiple fuel pins
## in an assembly. This example also demonstrates the internal mesh maker.
initial_fuel_density = 10200
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
a_lower = 0.06951
a_upper = 3.72711
initial_porosity = 0.04
[]
# ==================================================== #
# Mesh (and Geometry, internally-meshed)
# ==================================================== #
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
clad_thickness = 0.0005
pellet_outer_radius = 0.0041
clad_bot_gap_height = 0.00152
clad_top_gap_height = 0.16
pellet_quantity = 1
pellet_height = 3.6576
clad_gap_width = 8.0e-05
bottom_clad_height = 0.0167
top_clad_height = 0.0167
nx_p = 6 # number of radial elements in the fuel
ny_p = 48 # number of axial elements in the fuel
nx_c = 3 # number of elements in the clad thickness
ny_c = 48 # number of elements in the axially in the clad
ny_cu = 1
ny_cl = 1
intervals = '0.03866 0.08211 0.08211 0.08211 0.08212 0.08211 0.08211 0.08211 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.079212 0.079212 0.079212 0.079212 0.079212'
elem_type = QUAD4
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 10
patch_update_strategy = auto
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 493
[]
# ==================================================== #
# Dimensions and Primary Variables
# ==================================================== #
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 3.000000e+02
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
# ==================================================== #
# Auxiliary Variables
# ==================================================== #
[AuxVariables]
# ================================================== #
# Nodal Quantities
# ================================================== #
[htcl]
initial_condition = 500.0
[]
[htcv]
initial_condition = 0.0
[]
[Tl]
initial_condition = 565.0
[]
[Tv]
initial_condition = 565.0
[]
[burnup]
block = 3
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 5.240000e-06
[]
# ================================================== #
# Constant Monomial Quantities (Non-Mechanics)
# ================================================== #
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[axial_fission_rate]
order = CONSTANT
family = MONOMIAL
[]
[axial_burnup]
order = CONSTANT
family = MONOMIAL
[]
[axial_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.04
[]
[]
# ==================================================== #
# Time- and Space-Dependent Source and BCs
# ==================================================== #
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
x = '-100 0 5000'
y = '0 0 25000'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_temperature]
type = PiecewiseLinear
x = '-100 0'
y = '293 565'
axis = y
[]
[coolant_pressure_ramp]
# used in coolantPressure BC
type = PiecewiseLinear
scale_factor = 1
x = '0 10000.0'
y = '0 1.0'
[]
[]
# ==================================================== #
# Burnup Equation Set
# ==================================================== #
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
isotopes = 'U235 U238'
isotope_fractions = '3.100e-02 9.690e-01'
RPF = RPF
[]
[]
# ==================================================== #
# Primary Kernels used in Heat Transfer
# ==================================================== #
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
extra_vector_tags = 'ref'
block = 3
[]
[]
[AuxKernels]
# ================================================== #
# Pre-Defined Types
# ================================================== #
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
factor = 1.27e+14 # (n/m2-s per W/m)
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = linear
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
execute_on = linear
[]
# ================================================== #
# Other General Types
# ================================================== #
[axial_burnup]
type = SpatialUserObjectAux
block = 3
variable = axial_burnup
user_object = axial_burnup
execute_on = timestep_begin
[]
[axial_temperature]
type = SpatialUserObjectAux
block = 3
variable = axial_temperature
user_object = axial_temperature
execute_on = timestep_begin
[]
[]
# ==================================================== #
# Mechanical and Thermal Contact
# ==================================================== #
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
normal_smoothing_distance = 0.1
model = frictionless
formulation = Kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.200000e+00
roughness_primary = 1.8e-06
roughness_secondary = 8e-07
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 0.0001
normal_smoothing_distance = 0.1
order = FIRST
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[convective_clad_surface_bottom]
type = ConvectiveFluxBC
boundary = '1 2 3'
variable = temp
rate = 38200.0 #convection coefficient (h)
initial = 565.0
final = 585.0
duration = 1.0e4 #duration of initial power ramp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.55132e+07
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 1.99948e+06
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
# ==================================================== #
# Specification of Material Properties
# ==================================================== #
[Materials]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
diameter = 0.008192
diametral_gap =0.000168
# Average burnup at which fuel comes into contact with clad at 25kW/m
burnup_relocation_stop = 0.0315
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10200.0
eigenstrain_name = fuel_volumetric_strain
total_densification = 0.01
[]
[fission_gas_release]
type = UO2Sifgrs
axial_power_profile = axial_peaking_factors
block = 3
burnup = burnup
fission_rate = fission_rate
hydrostatic_stress = hydrostatic_stress
grain_radius = grain_radius
pellet_brittle_zone = pbz
pellet_id = pellet_id
rod_ave_lin_pow = linear_heat_rate_profile
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
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 = 1
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 7833
[]
[]
# ==================================================== #
# User Objects for Output Processing
# ==================================================== #
[UserObjects]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.0041
number_pellets = 1
execute_on = linear
[]
[averagefissionrate]
type = LayeredAverage
block = 3
variable = fission_rate
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[average_temp]
type = LayeredAverage
block = 3
variable = temp
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[averagebu]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[casl_average_fission_rate]
variable = fission_rate
type = LayeredAverage
block = 3
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[surface_temp]
type = LayeredSideAverage
boundary = 2
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[axial_temperature]
type = LayeredAverage
block = 3
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[axial_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[integral_temperature]
type = LayeredAverage
block = 3
variable = temp
direction = y
num_layers = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
execute_on = timestep_begin
[]
[average]
type = LayeredAverage
block = 3
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[axial_surface_temperature]
type = LayeredSideAverage
boundary = 2
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[rod_avg_fast_fluence]
type = LayeredSideAverage
boundary = 2
variable = fast_neutron_fluence
direction = y
num_layers = 1
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[casl_clad_surface_heat_flux]
type = LayeredSideDiffusiveFluxAverage
variable = temp
boundary = 2
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
diffusivity = thermal_conductivity
execute_on = timestep_begin
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 293
[]
[]
# ==================================================== #
# Solver Options
# ==================================================== #
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
verbose = true
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
# ================================================== #
# Time Step Control
# ================================================== #
start_time = -100
end_time = 5e6
dtmin = 0.1
dtmax = 1e6
dt = 10
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
optimal_iterations = 1000
time_t = '0 1.0e4 53200 1.0e5'
time_dt = '1.0e3 1.0e3 1.0e3 1.0e5'
[]
[]
[Postprocessors]
# ================================================== #
# Required for Fission Gas Release Models
# ================================================== #
[ave_temp_interior]
# used to compute temperature of plenum
type = SideAverageValue
boundary = 9
variable = temp
outputs = exodus
execute_on = 'initial linear'
[]
[fission_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[gas_volume]
type = InternalVolume
boundary = 9
outputs = exodus
execute_on = 'initial linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[_dt]
type = TimestepSize
execute_on = timestep_end
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
# ==================================================== #
# Location and format of output
# ==================================================== #
[Outputs]
perf_graph = true
exodus = true
file_base = pin1_output
time_step_interval = 1
[console]
type = Console
max_rows = 25
output_linear = true
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
positions = '10 0 0'
input_files = 'pin2.i'
[]
[]
(test/tests/sifgrs/uo2/ad_diffusion_coefficient.i)
# Analytical test for the diffusion coefficient of the Sifgrs fission gas behavior model.
#
# For the purpose of verifying the implementation of the diffusion coefficient, the BISON results are compared with an independent calculations (see attached file regression_tests_sifgrs.xlsx).
# The formulation for the diffusion coefficient adopted in the Sifgrs model is based on the formulation of Turnbull et al. (JNM 107, 168, 1982; Preston, England, September 18-22, 1988).
#
# Variable definitions
# T = temperature in K
# F = Fission rate in fissions/(m^3*s)
# k = Boltzmann constant in J/K = 1.380651e-23
# Zo = fragment influence; fission fragment range of influence in meters = 1e-9
# lf = fragment range; fission fragment travel distance before coming to rest in meters = 6e-6
#
# Equations and sample calculations
#
# Use T = 1700 K, F = 2.5e19 fission/m^3s
#
# Diffusion coefficient terms (m^2/s)
#
# D1 = intrinsic term = 7.6e-10 * exp(-4.8599e-19/kT)
# D1 = 7.73e-19
#
# D2 = enhanced vacancy term = 1.41e-25 * exp(-1.9053e-19/kT) * sqrt(F)
# D2 = 2.10e-19
#
# The purely rating dependent term D3 is neglected (see, e.g., P. Losonen JNM, 304, 29, 2002)
#
# D = single gas atom diffusion coefficient = D1 + 4*D2
# D = 1.61e-18
#
# Based on the formulation of Speight (Nuclear Science and Engineering 37, 180, 1969), include effects of intragranular trapping and resolution to compute an effective diffusion coefficient. The trapping and resolution rates are computed using relations from White and Tucker (JNM 118, p1, 1983)
#
# R = Intragranular bubble radius in m = 5e-10*(1 + 106*exp(-8703/T))
# R = 8.17e-10
#
# Radius_sum = intragranular bubble radius + fragment influence = R + Zo in m
# Radius_sum = 1.82e-09
#
# CBtot = intragranular bubble concentration in 1/m^3 = 1.52e+27 / T - 3.3e+23
# CBtot = 5.64e+23
#
# g = trapping rate = 4 * pi * R * D * CBtot
# g = 5.70e-03
#
# b = resolution rate = 3.03 * F * pi * lf * Radius_sum^2
# b = 4.71e-03
#
# Deff = effective diffusion coefficient = D*b/(b + g)
# Deff = 5.41e-19
#
# Example problem description
#
# A single hex 8 element is used to solve the heat equation with no source term. One boundary of the block is insulated while the
# boundary opposite to the insulated boundary is assigned a prescibed Dirichlet boundary condition defined by a function.
# The function increases the temperature, starting at 800 K increasing linearly to 1700 K. At the same time, the fission rate is increasing linearly from 1e19 to 2.5e19. At the final time in this calculation, Deff should equal 5.41e-19.
# See also the sheet sifgr_diffusion_coefficient of the attached file (regression_tests_sifgrs.xlsx), which plots Deff values from this calculation and independent calculations. One should be able to reproduce that plot with the results from this test.
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
x = '0 1.2e7'
y = '800 1700'
scale_factor = 1
[]
[Fiss_func]
type = PiecewiseLinear
x = '0 1.2e7'
y = '1e19 2.5e19'
[]
[]
[Variables]
[T]
initial_condition = 800.0
[]
[]
[AuxVariables]
[fission_rate]
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[diffusion_coefficient]
type = ADMaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 1
temperature = T
fission_rate = fission_rate
testing_output = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
start_time = 0.0
num_steps = 12
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_grain]
type = ADElementIntegralFisGasGrainSifgrs
block = 1
[]
[fis_gas_boundary]
type = ADElementIntegralFisGasBoundarySifgrs
block = 1
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 1
[]
[]
[Outputs]
exodus = true
[]
(test/tests/sifgrs/uo2/first_stage_restart1.i)
# This test is for evaluating the first stage (i.e., the intra-granular diffusion calculation) of the Sifgrs fission gas behavior model.
# The first stage is isolated by setting the fractional bubble coverage at grain boundary saturation to zero (saturation_coverage = 0). Under this condition (i.e. gas reaching the grain boundaries goes instantaneously to the plenum), the ratio of fission gas released to fission gas generated calculated by the model should compare very closely with the analytical expression for fractional fission gas release fraction from the grains published by Speight (Nuclear Science and Engineering 37, 180, 1969). The Speight equation for fission gas release fraction (released/produced) is
#
# parameters:
# n and no are summation integers
# a = grain radius in m
# pi = the number pi 3.14159...
# D = effective diffusion coefficient in m^2/s where D includes the effects of intragranular trapping and resolution (see White, JNM 118, 1, 1983, and the
# fgr_diffusion_coefficient_test in BISON for a description)
# t = time in seconds
#
# 6*a^2
# f = 1 - sum(n=1, to no) ---------------- * {1 - exp -[D*n^2*pi^2*t/a^2]}
# pi^4 * D*t*n^4
#
# For no = 1, D = 4.123e-19 m^2/s, a = 1e-5 m, t = 1e6 s, f = 0.596.
# For no = 50, and the same parameters defined above, f = 0.1388
#
# With the output from this test, if one calculates fission gas released / fission gas produced at
# t = 1.e+06, the result should be 0.1032, which compares well with the analytical solution from Speight.
#
# See also the sheet sifgrs_first_stage of the attached excel file (regression_tests_sifgrs.xlsx).
# Check of fission gas produced
# beta = rate of gas production per unit volume by fission
# beta * time * volume = gas produced
# The following parameters are used to calculate beta
#
# t = time in seconds = 5e7
# Avogadros number = 6.023e23 atoms/mol
# FY = fractional yield = fraction of fission gas atoms per fission = 0.3017 atoms/fission
# Y = yield = FY/Avogadros number = atoms/fission / atoms/mol to give mols/fission
# F = fission rate = fissions/m^3*s = 2.5e19
# beta = F*Y = fissions/m^3s * mols/fission = mols/m^3*s
# gas produced = beta * time * volume
# For this test problem, volume = (0.01m)^3 = 1e-6m^3 = volume of single finite element in this problem
#
# Y = 0.3017/6.023e23 = 5.0091e-25 mol/fission
# beta = 2.5e19*5.009e-25 = 1.25e-5 mol/m^3s
# gas produced = 1.25e-5*5e7*1e-6 = 6.26e-4 mols
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[FRA]
type = MaterialRealAux
variable = fract_FGR_analytical
property = fract_FGR_analytical
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
block = 1
saturation_coverage = 0
temperature = T
fission_rate = fission_rate
testing_output = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 28 #50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
[out]
type = Exodus
[]
[console]
type = Console
execute_on = 'initial failed linear nonlinear timestep_end'
[]
[checkpoint]
type = Checkpoint
num_files = 1
[]
[]
[Problem]
[]
(workshop/bison_example/Discrete.i)
# This model is a higher order, discrete 10 pellet fuel stack (pellet_type_1).
[GlobalParams]
density = 10431.0
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = always
patch_size = 100 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[file]
file = discrete.e
type = FileMeshGenerator
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[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]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[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 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775
RPF = RPF
# N235 = N235
# N236 = N236
# N238 = N238
# N239 = N239
# N240 = N240
# N241 = N241
# N242 = N242
[]
[]
[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
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3145
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[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
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160.0e-6
diameter = 0.0082
burnup_relocation_stop = 0.035
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
[]
[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
zircaloy_material_type = stress_relief_annealed
[]
[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
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = 10431.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[fuel_centerline_temp]
type = NodalVariableValue
variable = temp
nodeid = 2369
[]
[fuel_surface_mid_temp]
type = NodalVariableValue
variable = temp
nodeid = 2887
[]
[fuel_surface_ridge_temp]
type = NodalVariableValue
variable = temp
nodeid = 2862
[]
[clad_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 7322
[]
[penetration_mid]
type = NodalVariableValue
variable = penetration
nodeid = 2887
[]
[penetration_ridge]
type = NodalVariableValue
variable = penetration
nodeid = 2862
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[]
[VectorPostprocessors]
[clad]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'timestep_end'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(examples/3D_rodlet_3pellets/discrete_half_symm/3d_3pellets.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} #95% TD (TD = 10980)
displacements = 'disp_x disp_y disp_z'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
[]
[Mesh]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
patch_update_strategy = auto
[mesh]
type = FileMeshGenerator
file = DiscreteThreePellets3D.e
[]
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fission_rate]
block = 3
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = 3
initial_condition = 5e-6
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[hoop_inelastic_strain]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 25e3 # 25 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_strain fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 2.49e-3
a_upper = 2.621e-2
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 3
value = 5.3548e+14
fission_rate_function = power_history
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = 3
variable = gas_swell
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[hoop_inelastic_strain]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = hoop_inelastic_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
penalty = 1e14
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = fis_gas_released_model
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1004
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_z_wedge]
type = DirichletBC
variable = disp_z
boundary = 99
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0.0
material_input = fis_gas_released_model
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.00836
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =50.0e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.02
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
temperature = temp
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_strain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
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 = 1
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
start_time = -200
dtmax = 1.0e6
dtmin = 1.0
end_time = 3.0e7
automatic_scaling = true
compute_scaling_once = true
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
optimal_iterations = 15
iteration_window = 3
growth_factor = 2.0
cutback_factor = 0.5
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
scale_factor = 2.0 # Half-Symmetry Model Correction
execute_on = 'INITIAL TIMESTEP_END'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
scale_factor = 2.0 # Half-Symmetry Model Correction
execute_on = 'INITIAL TIMESTEP_END'
[]
[gas_volume]
type = InternalVolume
boundary = 9
scale_factor = 2.0 # Half-Symmetry Model Correction
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced_model]
type = ElementIntegralFisGasGeneratedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # Scaled PostProcessor for Half-Symmetry Model
type = ScalePostprocessor
value = fis_gas_produced_model
scaling_factor = 2.0
execute_on = 'initial timestep_end'
[]
[fis_gas_released_model]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fission_gas_released] # Scaled PostProcessor for Half-Symmetry Model
type = ScalePostprocessor
value = fis_gas_released_model
scaling_factor = 2.0
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
execute_on = 'initial timestep_end'
[]
[flux_from_clad_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_clad] # Scaled PostProcessor for Half-Symmetry Model
type = ScalePostprocessor
value = flux_from_clad_model
scaling_factor = 2.0
execute_on = 'initial timestep_end'
[]
[flux_from_fuel_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # Scaled PostProcessor for Half-Symmetry Model
type = ScalePostprocessor
value = flux_from_fuel_model
scaling_factor = 2.0
execute_on = 'initial timestep_end'
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = 3
variable = fission_rate
execute_on = 'initial timestep_end'
[]
[rod_total_power_model]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
execute_on = 'initial timestep_end'
[]
[rod_total_power] # Scaled PostProcessor for Half-Symmetry Model
type = ScalePostprocessor
value = rod_total_power_model
scaling_factor = 2.0
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.03
execute_on = 'initial timestep_end'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'plenum_pressure interior_temp gas_volume'
[]
[]
(assessment/MOX/JOYO/B14/PTM002/analysis/b14_ptm002_2DRZ_t.i)
initial_fuel_density = 11057.75
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.4
pellet_outer_radius = 0.002675
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000105
clad_thickness = 0.00047
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.685
elem_type = QUAD8
nx_c = 4
ny_c = 100
nx_p = 20
ny_p = 100
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
[]
[burnup]
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 39814.5 39814.5 44289.3 44289.3 53927.4 53927.4 0'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 251280'
y = '3.3e+15 3.3e+15'
[]
[f_temp_out_clad]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 634.94 662.273 676.998 686.217 706.339 727 743.358 758.311 780.069 799.077 815.576 846.374 860.233 875.494 882.809 889.8'
scale_factor = 1
axis = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846 0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 34700 34700 38600 38600 47000 47000 0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[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
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.1372
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.00535
execute_on = timestep_begin
porosity = pore
energy_per_fission = 3.2e-11
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[temp_clad_outside]
type = FunctionDirichletBC
variable = temp
function = f_temp_out_clad
boundary = 2
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
temperature = temp
porosity = pore
block = pellet
Am_content = 0.0237
oxy_to_metal_ratio = 1.982
output_properties = 'thermal_conductivity'
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 11057.75
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius_const = 12e-06
bubble_gb_limit = 1.0e+11
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
line_search = 'none'
fixed_point_max_its = 1
fixed_point_abs_tol = 1e-3
fixed_point_rel_tol = 1e-3
l_max_its = 50
l_tol = 8e-3
nl_max_its = 50
nl_rel_tol = 1e-3
nl_abs_tol = 1e-3
start_time = 0
n_startup_steps = 1
end_time = 251280
dtmax = 10000
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e1
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = ElementAverageValue
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
variable = burnup
[]
[ave_pore]
type = ElementAverageValue
block = pellet
variable = pore
[]
[max_pore]
type = NodalExtremeValue
block = pellet
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
block = pellet
value_type = min
variable = pore
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.4 # rod height
[]
[]
[VectorPostprocessors]
[fuel_radial_temperature_Sample1]
type = LineValueSampler
variable = temp
start_point = '0.0 0.283 0.0'
end_point = '0.002675 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample1]
type = LineValueSampler
variable = pore
start_point = '0.0 0.283 0.0'
end_point = '0.002675 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample2]
type = LineValueSampler
variable = temp
start_point = '0.0 0.347 0.0'
end_point = '0.002675 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample2]
type = LineValueSampler
variable = pore
start_point = '0.0 0.347 0.0'
end_point = '0.002675 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample3]
type = LineValueSampler
variable = temp
start_point = '0.0 0.2 0.0'
end_point = '0.002675 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample3]
type = LineValueSampler
variable = pore
start_point = '0.0 0.2 0.0'
end_point = '0.002675 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[line_plot]
type = CSV
execute_on = 'FINAL'
time_step_interval = 1
file_base = 1d
create_final_symlink = true
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = b14_ptm002_pore.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
[]
(examples/accident_tolerant_fuel/uo2_coated_zircaloy/uo2_coated_zircaloy.i)
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_top_gap_height = 0.026
pellet_height = 0.1186
pellet_quantity = 1
clad_bot_gap_height = 0
pellet_outer_radius = 4.1e-3
clad_gap_width = 80e-6
clad_thickness = 0.57e-3
coating_thickness = 40e-6
clad_mesh_density = customize
pellet_mesh_density = customize
nx_c = 3
ny_c = 40
nx_p = 11
ny_p = 40
nx_coating = 2
elem_type = QUAD8
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 293.0
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_inner_wall = 5
clad_outer_wall = 2
clad_top = 3
clad_bottom = 1
pellet_exteriors = 8
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_hoop]
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e4 1e8'
y = '0 2.5e4 2.5e4'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0 1e8'
y = '6.537e-3 1 1'
scale_factor = 15.5e6
[]
[mass_flux_func]
type = PiecewiseLinear
x = '-200 0 1e8'
y = '3800. 3800. 3800.'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
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
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[coating]
block = coating
strain = FINITE
eigenstrain_names = 'coating_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[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
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = total_hoop_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[creep_strain_hoop]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = creep_strain_hoop
scalar_type = HoopStress
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
normal_smoothing_distance = 0.1
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580
inlet_pressure = pressure_ramp
inlet_massflux = mass_flux_func
rod_diameter = 9.54e-3
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
# Fuel
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[elastic_stress]
type = ComputeSmearedCrackingStress
block = pellet
cracking_stress = 1.68e8
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
burnup_function = burnup
temperature = temperature
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = 'pin_geometry'
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = pellet
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
# Clad
[clad_thermal]
type = ZryThermal
temperature = temperature
block = clad
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 7.5e10
poissons_ratio = 0.3
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep clad_plasticity'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 1e-4
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
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_plasticity]
type = ZryPlasticityUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.5
plasticity_model_type = MATPRO
zircaloy_alloy_type = 4
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6511.0
[]
# Coating
[coat_thermal]
type = ChromiumThermal
block = coating
temperature = temperature
[]
[coating_elasticity_tensor]
type = ChromiumElasticityTensor
temperature = temperature
block = coating
[]
[coat_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'coat_creep coat_plasticity'
block = coating
[]
[coat_creep]
type = ChromiumCreepUpdate
temperature = temperature
block = coating
[]
[coat_plasticity]
type = ChromiumPlasticityUpdate
temperature = temperature
block = coating
fast_neutron_fluence = 0.0
hardening_constant = 2e9
[]
[coat_thermal_expansion]
type = ChromiumThermalExpansionEigenstrain
block = coating
temperature = temperature
stress_free_temperature = 293.0
eigenstrain_name = coating_thermal_eigenstrain
[]
[density_coat]
type = StrainAdjustedDensity
block = coating
strain_free_density = 7190.0
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
max_value = 3200.0
min_value = 293.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-5
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 5e7
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = 5e5
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2.0
timestep_limiting_postprocessor = material_timestep
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temperature
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[_dt]
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[alhr_input]
type = FunctionValuePostprocessor
function = power_history
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[oxide_thickness]
type = ElementExtremeValue
block = clad
variable = oxide_thickness
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
csv = true
print_linear_residuals = true
color = false
[console]
type = Console
max_rows = 25
[]
[]
(assessment/MOX/JOYO/B14/PTM003/analysis/b14_ptm003_2DRZ_t.i)
initial_fuel_density = 11172.82
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.4
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.00008
clad_thickness = 0.00047
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.685
elem_type = QUAD8
nx_c = 4
ny_c = 100
nx_p = 20
ny_p = 100
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
[]
[burnup]
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 39814.5 39814.5 44289.3 44289.3 53927.4 53927.4 0'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 251280'
y = '3.3e+15 3.3e+15'
[]
[f_temp_out_clad]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 634.94 662.273 676.998 686.217 706.339 727 743.358 758.311 780.069 799.077 815.576 846.374 860.233 875.494 882.809 889.8'
scale_factor = 1
axis = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846 0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 34700 34700 38600 38600 47000 47000 0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[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
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.1409
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
porosity = pore
energy_per_fission = 3.2e-11
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[temp_clad_outside]
type = FunctionDirichletBC
variable = temp
function = f_temp_out_clad
boundary = 2
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
temperature = temp
porosity = pore
block = pellet
Am_content = 0.0237
oxy_to_metal_ratio = 1.961
output_properties = 'thermal_conductivity'
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
#outputs = exodus
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.97
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 11172.82
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius_const = 11e-06
bubble_gb_limit = 1.0e+11
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
line_search = 'none'
fixed_point_max_its = 1
fixed_point_abs_tol = 1e-3
fixed_point_rel_tol = 1e-3
l_max_its = 50
l_tol = 8e-3
nl_max_its = 50
nl_rel_tol = 1e-3
nl_abs_tol = 1e-3
start_time = 0
n_startup_steps = 1
end_time = 251280
dtmax = 10000
dtmin = 0.25
automatic_scaling = true
compute_scaling_once = false
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e1
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = ElementAverageValue
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
variable = burnup
[]
[ave_pore]
type = ElementAverageValue
block = pellet
variable = pore
[]
[max_pore]
type = NodalExtremeValue
block = pellet
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
block = pellet
value_type = min
variable = pore
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
# variable = temp
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
# variable = temp
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
# variable = temp
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.4 # rod height
[]
[]
[VectorPostprocessors]
[fuel_radial_temperature_Sample1]
type = LineValueSampler
variable = temp
start_point = '0.0 0.283 0.0'
end_point = '0.0027 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample1]
type = LineValueSampler
variable = pore
start_point = '0.0 0.283 0.0'
end_point = '0.0027 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample2]
type = LineValueSampler
variable = temp
start_point = '0.0 0.347 0.0'
end_point = '0.0027 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample2]
type = LineValueSampler
variable = pore
start_point = '0.0 0.347 0.0'
end_point = '0.0027 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample3]
type = LineValueSampler
variable = temp
start_point = '0.0 0.2 0.0'
end_point = '0.0027 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample3]
type = LineValueSampler
variable = pore
start_point = '0.0 0.2 0.0'
end_point = '0.0027 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[line_plot]
type = CSV
execute_on = 'FINAL'
time_step_interval = 1
file_base = 1d
create_final_symlink = true
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = b14_ptm003_pore.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/triso_failure/triso_1d_failure.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
[]
[]
[BCs]
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1346.0
[]
[exterior_pressure_x]
type = Pressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure]
# apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[radial_stress]
type = RankTwoCylindricalComponent
rank_two_tensor = stress
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 0 1'
cylindrical_component = RadialStress
property_name = radial_stress
outputs = all
[]
[max_principal_stress]
type = RankTwoInvariant
property_name = max_principal_stress
rank_two_tensor = stress
invariant = MaxPrincipal
[]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_thermal]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_thermal]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_thermal]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength_SiC]
type = GenericConstantMaterial
prop_values = '9640000'
prop_names = 'characteristic_strength'
block = SiC
[]
[characteristic_strength_PyC]
type = GenericConstantMaterial
prop_values = '964000'
prop_names = 'characteristic_strength'
block = 'IPyC OPyC'
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temperature]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temperature]
type = TimeIntegratedPostprocessor
value = avg_surface_temperature
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temperature
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = WeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
[]
[failure_indicator_SiC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_SiC
[]
[strength_IPyC]
type = WeibullEffectiveMeanStrength
block = IPyC
weibull_modulus = 6
[]
[failure_indicator_IPyC]
type = WeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_IPyC
[]
[failure_indicator_debonding]
type = TRISODebondingFailureIndicator
boundary = IPyC_outer_boundary
bond_strength = 1e5
stress_name = radial_stress
[]
[strength_OPyC]
type = WeibullEffectiveMeanStrength
block = OPyC
weibull_modulus = 6
[]
[failure_indicator_OPyC]
type = WeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_OPyC
[]
[failure_indicator_SiC_crackedIPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
[]
[failure_indicator_SiC_crackedOPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
[]
[triso_failure]
type = TRISOFailureEvaluation
IPyC_failure = failure_indicator_IPyC
OPyC_failure = failure_indicator_OPyC
SiC_failure = failure_indicator_SiC
SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
SiC_failure_crackedOPyC = failure_indicator_SiC_crackedOPyC
SiC_failure_debonding = failure_indicator_debonding
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
perf_graph = true
[]
(test/tests/sifgrs/uo2/ig_bubble_coarsening.i)
# This test is veryfing the implementation of the intragranular coarsening capability in Sifgrs.
# The results have been benchmarked to a stand-alone implementation of the model.
# The resulting amount of intragranular swelling can feed the thermomechanical analysis
# using the swelling model SIFGR_IG in the constitutive relation block.
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
x = '0. 6.07e7 60700250. 60700500. 60704100. 60704600.'
y = '600. 600. 1450. 2300. 2300. 600.'
[]
[Fiss_func]
type = PiecewiseLinear
x = '0. 6.07e7 60700250. 60700500. 60704100. 60704600.'
y = '1.e19 1.e19 1.e19 1.e19 1.e19 1.e19'
[]
[]
[Variables]
[T]
initial_condition = 600.
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_disl_grn]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_disl_grn]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_disl_grn]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_intra_total]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[bbl_cnc]
type = MaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
execute_on = 'TIMESTEP_END'
[]
[rad_bbl]
type = MaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
execute_on = 'TIMESTEP_END'
[]
[gascnc_bbl]
type = MaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
execute_on = 'TIMESTEP_END'
[]
[bbl_cnc_disl]
type = MaterialRealAux
variable = bbl_disl_grn
property = bubble_concentration_intra_dislocation
execute_on = 'TIMESTEP_END'
[]
[rad_bbl_disl]
type = MaterialRealAux
variable = rad_bbl_disl_grn
property = bubble_radius_intra_dislocation
execute_on = 'TIMESTEP_END'
[]
[gascnc_bbl_disl]
type = MaterialRealAux
variable = gas_bbl_disl_grn
property = gas_concentration_bubble_intra_dislocation
execute_on = 'TIMESTEP_END'
[]
[dvv0gr]
type = MaterialRealAux
variable = deltav_v0_intra_total
property = deltav_v0_intra_total
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
grain_radius_const = 5.e-6
ig_bubble_model = NUCLEATION_RESOLUTION
diff_coeff_option = TURNBULL_D1_4D2_D3
res_param_option = HETEROGENEOUS_SETYAWAN
ig_bubble_coarsening = WITH_COARSENING
ig_diff_algorithm = POLYPOLE1
nuclerate_scalef = 0.5
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = -100
end_time = 60704600.
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 10
iteration_window = 4
growth_factor = 2.
linear_iteration_ratio = 100
time_t = '0 6.0e+7 6.07e7 60704600'
time_dt = '1000 10000 100 1'
force_step_every_function_point = true
timestep_limiting_function = Temp_func
[]
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[radius_bubbles_at_dislocations]
type = ElementAverageValue
variable = rad_bbl_disl_grn
[]
[density_bbl_dislocations]
type = ElementAverageValue
variable = bbl_disl_grn
[]
[intrag_swelling]
type = ElementAverageValue
variable = deltav_v0_intra_total
[]
[]
[Outputs]
exodus = true
[]
(examples/TRISO/accident_simulation/triso1D_accident.i)
# This example is 1D spherical analysis of a TRISO fuel particle. Fully coupled
# heat transfer and solid mechanics, plus diffusion of the fission product
# species cesium (Cs) are simulated. The mesh includes contact surfaces
# between the buffer and IPyC layers to facilitate a gap opening between
# these layers. These surfaces are initially in mechanical contact but
# are assumed to have no strength in tension. A coarse mesh is used to
# provide a short run time.
# The calculation simulates fuel-life in three steps. The first step is an
# irradiation period, where constant power and a fixed particle surface
# temperature (1500 K) are assumed over a lifetime of 76 Ms (2.4 yrs).
# For the second step, fuel removal and storage are simulated by setting
# the reactor power and Cs source terms to zero, reducing the particle
# surface temperature to ambient (300 K), and then holding it
# for 100 days. A third and final step simulates accident
# behavior by increasing the particle surface temperature from ambient
# to 2073 K over 2 hrs, and then holding it at this elevated temperature
# for an additional 200 hrs. At the particle outer boundary, the Cs
# concentration is held at zero and the pressure at ambient during the
# entire simulation. The particle is assumed to be stress-free at an
# initial temperature of 1500 K.
#
# Details about this simulation are given in Section 4 of the following
# article: J. D. Hales, R. L. Williamson, S. R. Novascone, D. M. Perez,
# B. W. Spencer and G. Pastore, "Multidimensional multiphysics simulation
# of TRISO particle fuel", Journal of Nuclear Materials, Vol. 443, p. 531,
# 2013.
# This is a version using an interface kernel to model gap mass transfer.
# Sorption constants are given in Table 1 of the following article: A.
# Londono-Hurtado, I. Szlufarska, R. Bratton and D. Morgan, "A review of
# fission product sorption in carbon structures", Journal of Nuclear
# Materials, Vol. 426, p. 254, 2012.
initial_fuel_density = 11000
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = disp_x
flux_conversion_factor = 0.85
[]
[Mesh]
coord_type = RSPHERICAL
[gen] # exclude gap to establish buffer-IPyC neighbor relationships for the sorption interface kernel
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.125e-4 3.125e-4 3.525e-4 3.875e-4 4.275e-4'
mesh_density = '10 5 2 2 2'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[break] # create gap between buffer and IPyC to model mechanical and thermal contact
type = BreakMeshByBlockGenerator
input = gen
block_pairs = 'buffer IPyC'
split_interface = true
add_interface_on_two_sides = true
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 1500.0
[]
[conc]
initial_condition = 0.0
[]
[]
[AuxVariables]
[fission_rate]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[fluence]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[creep_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_yy]
order = CONSTANT
family = MONOMIAL
[]
[creep_zz]
order = CONSTANT
family = MONOMIAL
[]
[gap_HTC]
order = CONSTANT
family = MONOMIAL
[]
[gap_distance]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 76e6 76.001e6'
y = '1 1 0'
[]
[temp_bc]
type = PiecewiseLinear
x = '0 76e6 76.001e6 84.641e6 84.6482e6'
y = '1500 1500 300 300 2073'
[]
[k_function]
type = PiecewiseLinear
x = '0 200e6'
y = '4e-37 4e-37'
[]
[d1_function]
type = ParsedFunction
expression = 'exp(t/4.5e25)'
[]
[integral_flux_error]
type = ParsedFunction
symbol_names = 'buffer_integral_flux IPyC_integral_flux'
symbol_values = 'buffer_integral_flux IPyC_integral_flux'
expression = 'IPyC_integral_flux + buffer_integral_flux'
[]
[partial_pressure_error]
type = ParsedFunction
symbol_names = 'buffer_partial_pressure IPyC_partial_pressure'
symbol_values = 'buffer_partial_pressure IPyC_partial_pressure'
expression = 'IPyC_partial_pressure - buffer_partial_pressure'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx hydrostatic_stress'
strain = FINITE
incremental = true
add_variables = false
[default]
block = 'fuel buffer IPyC OPyC'
eigenstrain_names = 'thermal_strain swelling_strain'
extra_vector_tags = 'ref'
[]
[SiC]
block = 'SiC'
eigenstrain_names = 'thermal_strain'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[mass_ie]
type = TimeDerivative
variable = conc
extra_vector_tags = 'ref'
[]
[mass]
type = ArrheniusDiffusion
variable = conc
extra_vector_tags = 'ref'
[]
[mass_source]
type = BodyForce
variable = conc
function = power_history
value = 1.22e-5 # units of moles/m**3-s
block = fuel
extra_vector_tags = 'ref'
[]
[mass_decay]
type = Decay
variable = conc
radioactive_decay_constant = 7.297e-10 # units:(1/sec) The constant for Cesium
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = fuel
fission_rate_function = power_history
value = 3.89e19
execute_on = timestep_begin
[]
[fluence]
type = MaterialRealAux
property = fast_neutron_fluence
variable = fluence
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
execute_on = timestep_begin
density = ${initial_fuel_density}
[]
[creep_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_xx
index_i = 0
index_j = 0
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[creep_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_yy
index_i = 1
index_j = 1
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[creep_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_zz
index_i = 2
index_j = 2
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = buffer_IPyC
execute_on = linear
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_buffer
secondary = buffer_IPyC
penalty = 1e5
model = frictionless
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = IPyC_buffer
secondary = buffer_IPyC
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
gap_geometry_type = SPHERE
tangential_tolerance = 1e-6
roughness_coef = 0.0
quadrature = true
[]
[]
[InterfaceKernels]
[cesium_gap]
type = SorptionIsothermGapInterface
variable = conc
neighbor_var = conc
partial_pressure_name = partial_pressure
sorption_penalty = 1e5
diffusivity = arrhenius_diffusion_coef
use_flux_penalty = true
flux_penalty = 1e3
boundary = buffer_IPyC
extra_vector_tags = 'ref'
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
extra_vector_tags = 'ref'
[]
# fix temperature on free surface
[freesurf_temp]
type = FunctionDirichletBC
variable = temp
boundary = exterior
function = temp_bc
extra_vector_tags = 'ref'
[]
# fix concentration on free surface
[freesurf_conc]
type = DirichletBC
variable = conc
boundary = exterior
value = 0.0
extra_vector_tags = 'ref'
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 'buffer_IPyC IPyC_buffer'
initial_pressure = 0
startup_time = 1.0e4
R = 8.3145
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = volumeGas # coupling to post processor to get gas volume
material_input = 'fis_gas_released co_production' # coupling to post processor to get fission gas added, co added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 5e17
[]
[fission_gas_release] # Sifgrs fission gas release mode
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius_const = 5.0e-6
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
initial_porosity = 0.0
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = fuel
temperature = temp
burnup = burnup
eigenstrain_name = 'swelling_strain'
initial_fuel_density = ${initial_fuel_density}
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 'fuel'
[]
[fuel_elasticity]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.2e11
poissons_ratio = .345
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density} # kg/m^3
[]
[fuel_conc]
type = ArrheniusDiffusionCoef
block = fuel
d1 = 5.6e-8 # m^2/s
q1 = 209.0e+3 # J/mol
d2 = 5.2e-4 # m^2/s
q2 = 362.0e+3 # J/mol
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[buffer_eigenstrain]
type = PyCIrradiationEigenstrain
block = buffer
pyc_type = buffer
eigenstrain_name = 'swelling_strain'
[]
[buffer_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = buffer
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[buffer_elasticity]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e10
poissons_ratio = .23
[]
[buffer_stress]
type = PyCCreep
block = buffer
temperature = temp
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000.0 #kg/m^3
block = buffer
[]
[buffer_conc]
type = ArrheniusDiffusionCoef
block = buffer
d1 = 1.0e-12 # m^2/s
q1 = 0.0
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[buffer_partial_pressure]
type = SorptionPartialPressure
A = 19.33
B = -47290
D = 1.518
E = 4338
d1 = 3.397
d2 = 6.15e-4
unit_scale = 1e3 # convert from mol to mmol
density = density # convert from mmol/m^3 to mmol/kg
concentration = conc
temperature = temp
block = 'buffer IPyC'
outputs = 'all'
output_properties = partial_pressure
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC buffer'
[]
[IPyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = IPyC
pyc_type = dense
eigenstrain_name = 'swelling_strain'
[]
[IPyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = IPyC
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[IPyC_elasticity]
type = ComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 4.74e10
poissons_ratio = .23
[]
[IPyC_disp]
type = PyCCreep
block = 'IPyC OPyC'
temperature = temp
[]
[IPyC_temp]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[IPyC_den]
type = StrainAdjustedDensity
block = 'IPyC OPyC'
strain_free_density = 1900.0
[]
[IPyC_conc]
type = ArrheniusDiffusionCoef
block = IPyC
d1 = 6.3e-8
q1 = 222.0e+3
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[SiC_elasticity]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.4e11
poissons_ratio = .13
[]
[SiC_creep]
type = MonolithicSiCCreepUpdate
block = SiC
temperature = temp
k_function = k_function
[]
[SiC_stress]
type = ComputeMultipleInelasticStress
block = SiC
tangent_operator = elastic
inelastic_models = 'SiC_creep'
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3180.0 # kg/m^3
block = SiC
[]
[SiC_conc]
type = ArrheniusDiffusionCoef
block = SiC
d1 = 5.5e-14 # m^2/s
d1_function = d1_function
d1_function_variable = fluence
q1 = 125.0e+3 # J/mol
d2 = 1.6e-2 # m^2/s
q2 = 514.0e+3 # J/mol
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[OPyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = OPyC
pyc_type = dense
eigenstrain_name = 'swelling_strain'
[]
[OPyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = OPyC
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[OPyC_elasticity]
type = ComputeIsotropicElasticityTensor
block = OPyC
youngs_modulus = 4.74e10
poissons_ratio = .23
[]
[OPyC_conc]
type = ArrheniusDiffusionCoef
block = OPyC
d1 = 6.3e-8 # m^2/s
q1 = 222.0e+3 # J/mol
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_rel_tol = 5e-4
nl_abs_tol = 1e-9
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 85.3682e6
dt = 100
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 6
growth_factor = 1.5
linear_iteration_ratio = 100
time_t = '0 76e6 76.001e6 84.641e6 84.6482e6'
time_dt = '20 20 20 20 20'
[]
[Predictor]
type = SimplePredictor
scale = 1
skip_times_old = '0 76e6 76.001e6 84.641e6 84.6482e6'
[]
[]
[Outputs]
perf_graph = true
exodus = true
[console]
type = Console
max_rows = 25
[]
[csv]
type = CSV
sync_times = '100 6308007 75696087'
sync_only = true
[]
[]
[Postprocessors]
[Cs_release]
type = SideIntegralMassFlux
variable = conc
boundary = exterior
execute_on = timestep_end
[]
[dt]
type = TimestepSize
execute_on = timestep_end
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
scale_factor = -1
execute_on = 'initial timestep_end'
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
scale_factor = -1
execute_on = 'initial timestep_end'
[]
[volumeGas]
type = InternalVolume
boundary = 'buffer_IPyC IPyC_buffer'
# ro = 3.125e-4
# ri = 2.125e-4
# vb = 4/3*pi*(ro^3-ri^3) = 8.76e-11
# buffer density = 1000
# PyC density = 1900
# fill ratio = 10/19
# vb*10/19 = 4.6e-11
# Must remove 4.6e-11 m^3 from the volume
addition = -4.6e-11
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = 'buffer_IPyC IPyC_buffer'
execute_on = 'initial timestep_end'
[]
[ave_temp_interior]
type = SideAverageValue
boundary = 'buffer_IPyC IPyC_buffer'
variable = temp
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[avg_surface_temp]
type = SideAverageValue
variable = temp
boundary = exterior
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[buffer_integral_flux]
type = SideDiffusiveFluxIntegral
variable = conc
boundary = buffer_IPyC
diffusivity = arrhenius_diffusion_coef
[]
[IPyC_integral_flux]
type = SideDiffusiveFluxIntegral
variable = conc
boundary = IPyC_buffer
diffusivity = arrhenius_diffusion_coef
[]
[buffer_partial_pressure]
type = SideAverageMaterialProperty
property = partial_pressure
boundary = buffer_IPyC
[]
[IPyC_partial_pressure]
type = SideAverageMaterialProperty
property = partial_pressure
boundary = IPyC_buffer
[]
[integral_flux_error]
type = FunctionValuePostprocessor
function = integral_flux_error
[]
[partial_pressure_error]
type = FunctionValuePostprocessor
function = partial_pressure_error
[]
[integral_Cs_release]
type = TimeIntegratedPostprocessor
value = Cs_release
[]
[Cs_production]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 1.22e-5 # units of moles/m**3-s
[]
[time_integral_Cs_production]
type = TimeIntegratedPostprocessor
value = Cs_production
[]
[volumeFuel_initial]
type = InternalVolume
boundary = fuel_outer_boundary
scale_factor = -1
execute_on = initial
[]
[integral_Cs_production]
type = ParsedPostprocessor
pp_names = 'time_integral_Cs_production volumeFuel_initial'
expression = 'time_integral_Cs_production * volumeFuel_initial'
[]
[Cs_release_fraction]
type = ParsedPostprocessor
pp_names = 'integral_Cs_release integral_Cs_production'
expression = 'integral_Cs_release / integral_Cs_production'
[]
[]
[VectorPostprocessors]
[temperaturevpp]
type = SideValueSampler
boundary = 11
variable = temp
sort_by = x
outputs = 'csv'
use_displaced_mesh = true
[]
[]
(test/tests/triso/base_irradiation/triso1D_accident_action.i)
[GlobalParams]
density = 11000.0 # kg/m^3
order = SECOND
displacements = 'disp_x'
temperature = temperature
energy_per_fission = 3.2e-11
stress_free_temperature = '1500'
[]
[Mesh]
coord_type = RSPHERICAL
[mesh]
type = FileMeshGenerator
file = triso1DFineTruss3.e
[]
[]
[Problem]
type = ReferenceResidualProblem
#reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[AuxVariables]
[gap_condSlave]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 76e6 76.001e6'
y = '1 1 0'
[]
[fission_rate]
type = LinearCombinationFunction
functions = power_history
w = 3.89e19
[]
[temp_bc]
type = PiecewiseLinear
x = '0 76e6 76.001e6 84.641e6 84.6482e6'
y = '1500 1500 300 300 2073'
[]
[k_function]
type = PiecewiseLinear
x = '0 200e6'
y = '4e-37 4e-37'
[]
[d1_function]
type = ParsedFunction
expression = 'exp(t/4.5e25)'
[]
[d_gap]
type = PiecewiseLinear
x = '1500 2100'
y = '1e-14 1e-12'
[]
[]
[AuxKernels]
[conductanceSlave]
type = MaterialRealAux
property = gap_conductance
variable = gap_condSlave
boundary = BufferGapBndry
execute_on = 'initial timestep_end'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 15
secondary = 17
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 15
secondary = 17
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
roughness_primary = 0e-6
roughness_secondary = 0e-6
jumpdistance_primary = 0
jumpdistance_secondary = 0
quadrature = true
emissivity_secondary = 0.0
emissivity_primary = 0.0
min_gap = 1e-7
max_gap = 50e-6
gap_geometry_type = sphere
[]
[cesium_contact]
type = GapHeatTransfer
variable = conc_Cs
primary = 15
secondary = 17
tangential_tolerance = 1e-6
gap_conductivity_function = d_gap
gap_conductivity_function_variable = temperature
appended_property_name = _conc
quadrature = true
gap_geometry_type = sphere
emissivity_primary = 0.0
emissivity_secondary = 0.0
min_gap = 1e-7
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = FunctionDirichletBC
variable = temperature
boundary = exterior
function = temp_bc
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
# apply plenum pressure on clad inner walls and pellet surfaces
[PlenumPressure]
[plenumPressure]
boundary = BufferGapVol
initial_pressure = 100
startup_time = 0
R = 8.3145
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[NuclearMaterials]
physics = 'Mechanics Thermal'
fission_operation = 'Normal'
initial_temperature = 1500
elements_tracked = 'Cs'
element_decay_constants = '7.297e-10'
elements_initial_concentration = '0.0'
element_scaling = '1e18'
use_automatic_differentiation = false
add_variables = true
flux_factor = 5e17
flux_function = 'power_history'
strain = 'FINITE'
extra_vector_tags = 'ref'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
[ParticleFuel]
[UO2]
block = fuel
fuel_type = 'UO2'
flux_factor = 5e17
flux_function = 'power_history'
fission_rate_function = fission_rate
initial_porosity = 0.0
youngs_modulus = 2.2e11
poissons_ratio = 0.345
concentration_density = 1.22e-5 # units of mol/m**3-s
gas_constant = 8.3143
particle_fuel_models = 'Burnup Diffusion Swelling Creep ThermalExpansion'
diffusion_1st_coefficients = '5.6e-8'
diffusion_2nd_coefficients = '5.2e-4'
diffusion_1st_activation_energies = '209.0e+3'
diffusion_2nd_activation_energies = '362.0e+3'
initial_density = 11000.0
average_grain_radius = 10e-6
triso_geometry = particle_geometry
thermal_conductivity_model = FINK_LUCUTA
[]
[]
[ParticleLayers]
layers_models = 'Diffusion IrradiationGrowth ThermalExpansion Creep'
fuel_type = 'UO2'
[IPyC]
[IPyC_layer]
block = IPyC
additional_generate_output = 'creep_strain_xx creep_strain_yy
creep_strain_zz'
diffusion_1st_coefficients = '6.3e-8'
diffusion_1st_activation_energies = '222.0e+3'
initial_density = 1900.0
youngs_modulus = 4.74e10
poissons_ratio = 0.23
thermal_conductivity = 4.0
specific_heat = 720.0
thermal_expansion_coeff = 5.65e-6
[]
[]
[OPyC]
[OPyC_layer]
block = OPyC
additional_generate_output = 'creep_strain_xx creep_strain_yy
creep_strain_zz'
diffusion_1st_coefficients = '6.3e-8'
diffusion_1st_activation_energies = '222.0e+3'
initial_density = 1900.0
thermal_conductivity = 4.0
specific_heat = 720.0
youngs_modulus = 4.74e10
poissons_ratio = 0.23
thermal_expansion_coeff = 5.65e-6
[]
[]
[SiC]
[SiC_layer]
block = SiC
additional_generate_output = 'creep_strain_xx creep_strain_yy
creep_strain_zz'
diffusion_1st_coefficients = '5.5e-14'
diffusion_1st_activation_energies = '125.0e+3'
d1_function = d1_function
d1_function_variable = fast_neutron_fluence
diffusion_2nd_coefficients = '1.6e-2'
diffusion_2nd_activation_energies = 514.0e3
initial_density = 3180.0
thermal_conductivity = 13.9
specific_heat = 620.0
youngs_modulus = 3.4e11
poissons_ratio = 0.13
thermal_expansion_coeff = 4.9e-6
[]
[]
[Buffer]
[Buffer_layer]
block = buffer
diffusion_1st_coefficients = '1e-12'
diffusion_1st_activation_energies = '0'
initial_density = 1000.0
youngs_modulus = 2.0e10
poissons_ratio = 0.23
thermal_conductivity = 0.5
specific_heat = 720.0
thermal_expansion_coeff = 5.65e-6
additional_generate_output = 'creep_strain_xx creep_strain_yy
creep_strain_zz'
[]
[]
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_rel_tol = 1e-8
nl_abs_tol = 1e-7
nl_max_its = 15
l_tol = 1e-8
l_max_its = 50
start_time = 0.0
#end_time = 85.3682e6
end_time = 1e3
num_steps = 1000
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
time_t = '0 76e6 76.001e6 84.641e6 84.6482e6'
time_dt = '20 20 20 20 20'
growth_factor = 1.5
optimal_iterations = 8
linear_iteration_ratio = 100
[]
[Quadrature]
order = THIRD
[]
[]
[Postprocessors]
[Int_Cs_release]
type = TimeIntegratedPostprocessor
value = release_Cs_inc
[]
[Int_Cs_release_fuel]
type = TimeIntegratedPostprocessor
value = release_fuel_Cs
[]
[Int_Cs_release_PyCGapBndry]
type = TimeIntegratedPostprocessor
value = release_PyCGapBndry_Cs
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
execute_on = linear
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
execute_on = linear
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
execute_on = 'initial timestep_end'
[]
[volumeFuel]
type = InternalVolume
boundary = fuel
execute_on = 'initial timestep_end'
[]
[volumeGas]
type = InternalVolume
boundary = BufferGapVol
addition = -4.6e-11
execute_on = 'initial linear'
[]
[volumeBufferShell]
type = InternalVolume
boundary = BufferGapVol
execute_on = 'initial timestep_end'
[]
[ave_temp_interior]
type = SideAverageValue
boundary = BufferGapVol
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
outputs = exodus
execute_on = 'initial linear'
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_surface_temp]
type = SideAverageValue
variable = temperature
boundary = exterior
outputs = exodus
execute_on = 'initial timestep_end'
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
outputs = exodus
execute_on = 'initial timestep_end'
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
execute_on = 'initial nonlinear'
[]
[]
[Outputs]
print_linear_residuals = false
[console]
type = Console
max_rows = 5
outlier_variable_norms = false
[]
[exodus]
type = Exodus
file_base = triso1D_accident_action_out
[]
[]
(examples/2D_plane_strain_fretting_wear/fretting-wear-initial-dyn-exc.i)
user_start_time = 1.0e5
user_end_time = 1.000002e5
end_dynamic_excitation = 1.000002e5
time_step_dynamics = 2.0e-3
step_number = 1
initial_fuel_density = 10431.0
[GlobalParams]
temperature = temp
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = fretting-wear-initial_out_cp/LATEST
skip_partitioning = true
allow_renumbering = false
[]
patch_size = 100 # For contact algorithm
[]
[Variables]
[temp]
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y '
converge_on = 'disp_x disp_y temp'
restart_file_base = ./fretting-wear-initial_out_cp/LATEST
material_coverage_check = false
kernel_coverage_check = false
[]
[AuxVariables]
[fission_rate]
block = pellet_type_1
[]
[burnup]
block = pellet_type_1
[]
[fast_neutron_flux]
block = 'clad grid'
[]
[fast_neutron_fluence]
block = 'clad grid'
[]
[relocation_strain]
order = CONSTANT
family = MONOMIAL
[]
[worn_depth]
order = FIRST
family = LAGRANGE
block = 'spacer_clad_mechanical_secondary_subdomain'
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[pressure_var] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '0 1e4'
y = '0 1'
[]
[pressure_var_variable] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = ParsedFunction
expression = 'if(t < 1e4, 1, 1 + sin((t-1e4)*pi/10.0) * (t-1e4))'
[]
[]
[Physics/SolidMechanics/Dynamic]
[pellets]
add_variables = true
newmark_beta = 0.25
newmark_gamma = 0.5
block = pellet_type_1
strain = FINITE
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
temperature = temp
extra_vector_tags = 'ref'
[]
[clad]
add_variables = true
newmark_beta = 0.25
newmark_gamma = 0.5
block = clad
strain = FINITE
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
temperature = temp
extra_vector_tags = 'ref'
[]
[grid]
add_variables = true
newmark_beta = 0.25
newmark_gamma = 0.5
block = grid
strain = FINITE
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'grid_thermal_eigenstrain grid_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
temperature = temp
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
block = 'pellet_type_1 clad grid'
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
block = 'pellet_type_1 clad'
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = pellet_type_1
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[spacer_clad_mechanical]
formulation = mortar
model = coulomb
primary = 101
secondary = 102
c_normal = 1e+12 # 5e13
c_tangential = 1e+18
friction_coefficient = 0.4
# Do not apply dynamic stabilization
newmark_beta = 0.0001
newmark_gamma = 0.5
capture_tolerance = 0.0
mortar_dynamics = true
interpolate_normals = false
normal_lm_scaling = 1.0e-6
tangential_lm_scaling = 1.0e-6
generate_mortar_mesh = false
wear_depth = worn_depth
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical_real]
formulation = mortar
model = frictionless
primary = 7
secondary = 8
c_normal = 1e+16 #
c_tangential = 1e+16
friction_coefficient = 0.4
# Do not apply dynamic stabilization
newmark_beta = 0.0001
newmark_gamma = 0.5
capture_tolerance = 0.0
mortar_dynamics = true
interpolate_normals = false
generate_mortar_mesh = false
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = 7
secondary_boundary = 8
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
primary_subdomain = 'pellet_clad_mechanical_real_primary_subdomain'
secondary_subdomain = 'pellet_clad_mechanical_real_secondary_subdomain'
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 21
axial_axis = 2
density = ${initial_fuel_density}
a_lower = -1e-3 # mesh dependent!
a_upper = 1e-3 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
RPF = RPF
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[worn_depth]
type = MortarArchardsLawAux
variable = worn_depth
primary_boundary = 101
secondary_boundary = 102
primary_subdomain = 'spacer_clad_mechanical_primary_subdomain'
secondary_subdomain = 'spacer_clad_mechanical_secondary_subdomain'
displacements = 'disp_x disp_y'
friction_coefficient = 0.5
energy_wear_coefficient = 0.1e-9
normal_pressure = spacer_clad_mechanical_normal_lm
execute_on = 'TIMESTEP_END'
[]
[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
[]
[relocation_strain]
type = MaterialRealAux
property = relocation_strain
variable = relocation_strain
block = pellet_type_1
execute_on = timestep_end
[]
[]
[BCs]
# Define boundary conditions
[no_y_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_y
boundary = 15
value = 0.0
[]
[no_x_all] # pin pellets and clad along axis of symmetry (x)
type = DirichletBC
variable = disp_x
boundary = 16
value = 0.0
[]
# Flow-induced vibrations refined_excitation
[vibration_x] # pin pellets and clad along axis of symmetry (y)
type = FunctionDirichletBC
variable = disp_x
boundary = '112'
expression = 'if(t < ${end_dynamic_excitation}, 10.0*1.0e-6*sin(2*3.1415926535*20* (t - ${user_start_time})) + 2.0*1.0e-6*sin(2*3.1415926535*35*(t - ${user_start_time})), 0)'
#expression = '0'
[]
[vibration_y] # pin pellets and clad along axis of symmetry (y)
type = FunctionDirichletBC
variable = disp_y
boundary = '112'
expression = 'if(t < ${end_dynamic_excitation}, 10.0*1.0e-6*sin(2*3.1415926535*20*(t-${user_start_time})) + 2.0*1.0e-6*sin(2*3.1415926535*35*(t-${user_start_time})) + 0.9e-4, 0.9e-4)'
#expression = '5.9e-4'
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = pressure_var # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[convective_clad_surface] # apply convective boundary to clad outer surface
type = ConvectiveFluxBC
boundary = '2'
variable = temp
rate = 38200.0 #convection coefficient (h)
initial = 580.0
final = 580.0
duration = 1.0e4 #duration of initial power ramp
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = pellet_type_1
temperature = temp
burnup = burnup
initial_porosity = 0.0
[]
[fuel_solid_mechanics_swelling] # free expansion strains (swelling and densification) for UO2 (BISON kernel)
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = pellet_type_1
burnup = burnup
initial_fuel_density = 10431.0
temperature = temp
eigenstrain_name = 'fuel_volumetric_eigenstrain'
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet_type_1
temperature = temp
fission_rate = fission_rate
density = 10431.0
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_1'
youngs_modulus = 906e6
poissons_ratio = 0.345
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
block = pellet_type_1
inelastic_models = 'fuel_creep'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup = burnup
diameter = 0.0082
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160e-6
burnup_relocation_stop = 1.e20
relocation_activation1 = 5000
axial_axis = 2
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 'clad'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_creep_model]
type = ZryCreepHayesHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
temperature = temp
zircaloy_material_type = stress_relief_annealed
model_irradiation_creep = true
model_thermal_creep = true
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irrgrowth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
axial_direction = 2
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = 'clad_irradiation_eigenstrain'
[]
[grid_thermal]
type = HeatConductionMaterial
block = 'grid'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[grid_elasticity_tensor]
type = ZryElasticityTensor
block = 'grid'
[]
[grid_creep_model]
type = ZryCreepHayesHoppeUpdate
block = 'grid'
fast_neutron_flux = fast_neutron_flux
temperature = temp
zircaloy_material_type = stress_relief_annealed
model_irradiation_creep = true
model_thermal_creep = true
[]
[grid_stress]
type = ComputeMultipleInelasticStress
block = 'grid'
tangent_operator = elastic
inelastic_models = 'grid_creep_model'
[]
[grid_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'grid'
thermal_expansion_coeff = 5.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'grid_thermal_eigenstrain'
[]
[grid_irrgrowth]
type = ZryIrradiationGrowthEigenstrain
block = grid
fast_neutron_fluence = fast_neutron_fluence
axial_direction = 2
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = 'grid_irradiation_eigenstrain'
[]
[fission_gas_release] # Forsberg-Massih fission gas release mode
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius = 10.0e-6
#external_pressure = 40e6
[]
[clad_density]
type = StrainAdjustedDensity
block = 'clad'
density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 10431.0
[]
[grid]
type = StrainAdjustedDensity
block = grid
density = 6560
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-6 NONZERO 1e-14'
snesmf_reuse_base = true
line_search = 'basic'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 35
nl_rel_tol = 1e-7
nl_abs_tol = 1e-11
[TimeIntegrator]
type = NewmarkBeta
beta = 0.25
gamma = 0.5
[]
start_time = '${user_start_time}'
end_time = '${user_end_time}'
timestep_tolerance = 1e-8
[TimeStepper]
type = IterationAdaptiveDT
dt = '${time_step_dynamics}'
time_t = '${end_dynamic_excitation}'
time_dt = '${time_step_dynamics}'
growth_factor = 1.2
cutback_factor = 0.75
[]
dtmax = 3e-2
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[average_interior_clad_temperature] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[average_centerline_fuel_temperature] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[plenum_temperature]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial timestep_end'
[]
[plenum_volume] # gas volume
type = InternalVolume
boundary = 9
addition = 1.3e-5 #rough guess of plenum volume/unit length of fuel
execute_on = 'initial linear'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_generated] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = linear
[]
[fission_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = linear
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[_dt] # time step
type = TimestepSize
execute_on = timestep_end
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet_type_1
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
execute_on = timestep_end
[]
[fission_gas_released_percentage]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fission_gas_generated
[]
[]
[VectorPostprocessors]
[contact_pressure]
type = NodalValueSampler
sort_by = x
use_displaced_mesh = true
variable = spacer_clad_mechanical_normal_lm
boundary = 102
[]
[frictional_pressure]
type = NodalValueSampler
sort_by = x
use_displaced_mesh = true
variable = spacer_clad_mechanical_tangential_lm
boundary = 102
[]
[worn_depth]
type = NodalValueSampler
sort_by = x
use_displaced_mesh = true
variable = worn_depth
boundary = 102
execute_on = TIMESTEP_END
[]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
execute_on = 'FINAL'
[console]
type = Console
max_rows = 25
[]
checkpoint = true
file_base = 'step_${step_number}'
[]
(test/tests/sifgrs/u3si2/option_base.i)
# This base input file is used to test the various input model options
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
[]
[]
[Problem]
solve = false
[]
[AuxVariables]
[fission_rate]
initial_condition = 2.5e19
[]
[T]
initial_condition = 1000
[]
[]
[AuxKernels]
[tempaux]
type = ParsedAux
variable = T
use_xyzt = true
expression = '1000 + 1000 * t / 50e6'
[]
[]
[Materials]
[fission_gas_behavior]
type = U3Si2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
ig_diff_algorithm = POLYPOLE2
[]
[]
[Executioner]
type = Transient
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[]
[Outputs]
csv = true
[]
(examples/3D_rodlet_3pellets/discrete_full/3d_3pellets_mortar.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} #95% TD (TD = 10980)
displacements = 'disp_x disp_y disp_z'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
volumetric_locking_correction = true
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
converge_on = 'disp_x disp_y disp_z temp'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = DiscreteThreePellets3D_full_HEX8.e
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
patch_update_strategy = auto
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fission_rate]
block = 3
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = 3
initial_condition = 5e-6
[]
[frictional_status]
family = LAGRANGE
order = FIRST
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[hoop_inelastic_strain]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 25e3 # 25 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_strain fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
temperature = temp
[]
[clad]
block = 1
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
temperature = temp
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 2.49e-3
a_upper = 2.621e-2
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 3
value = 5.3548e+14
fission_rate_function = power_history
[]
[frictional_state]
type = MortarFrictionalStateAux
tangent_one = pellet_clad_mechanical_tangential_lm
tangent_two = pellet_clad_mechanical_tangential_3d_lm
boundary = 10
contact_pressure = pellet_clad_mechanical_normal_lm
variable = frictional_status
mu = 0.5
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = 3
variable = gas_swell
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[hoop_inelastic_strain]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = hoop_inelastic_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = mortar
model = coulomb
c_normal = 1e+18
c_tangential = 1e+18
friction_coefficient = 0.5
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
gas_released = fis_gas_released_model
initial_moles = initial_moles
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1004
value = 0.0
[]
[no_z_all]
type = DirichletBC
variable = disp_z
boundary = 1004
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_x_clad_bottom]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[]
[no_z_clad_bottom]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0.0
[]
[no_z_fuel_bottom_point]
type = DirichletBC
variable = disp_z
boundary = 1110
value = 0.0
[]
[no_z_fuel_bottom_point_y]
type = DirichletBC
variable = disp_y
boundary = 1110
value = 0.0
[]
[no_x_fuel_bottom_point]
type = DirichletBC
variable = disp_x
boundary = 1120
value = 0.0
[]
[no_x_fuel_bottom_point_y]
type = DirichletBC
variable = disp_y
boundary = 1120
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0.0
material_input = fis_gas_released_model
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.00836
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =50.0e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.02
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
temperature = temp
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
# thermal_expansion_coeff = 10.0e-6 (reference)
# We are artificially increasing the fuel expansion to simulate mechanical contact within reasonable 'example' time
thermal_expansion_coeff = 50.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_strain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
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 = 1
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-6 NONZERO 1e-13'
line_search = 'basic'
l_max_its = 10
nl_max_its = 40
nl_rel_tol = 1e-7
nl_abs_tol = 1e-8
start_time = -200
dtmin = 1.0
end_time = 25200
nl_div_tol = 1e+40
# For a regular thermal expansion value, use following end_time
# end_time = 4.0e7
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
optimal_iterations = 15
iteration_window = 3
growth_factor = 2.0
cutback_factor = 0.5
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
scale_factor = 1.0
execute_on = 'INITIAL TIMESTEP_END'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
scale_factor = 1.0
execute_on = 'INITIAL TIMESTEP_END'
[]
[gas_volume]
type = InternalVolume
boundary = 9
scale_factor = 1.0
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced_model]
type = ElementIntegralFisGasGeneratedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ScalePostprocessor
value = fis_gas_produced_model
scaling_factor = 1.0
execute_on = 'initial timestep_end'
[]
[fis_gas_released_model]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fission_gas_released]
type = ScalePostprocessor
value = fis_gas_released_model
scaling_factor = 1.0
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
execute_on = 'initial timestep_end'
[]
[flux_from_clad_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_clad]
type = ScalePostprocessor
value = flux_from_clad_model
scaling_factor = 1.0
execute_on = 'initial timestep_end'
[]
[flux_from_fuel_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = ScalePostprocessor
value = flux_from_fuel_model
scaling_factor = 1.0
execute_on = 'initial timestep_end'
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = 3
variable = fission_rate
execute_on = 'initial timestep_end'
[]
[rod_total_power_model]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
execute_on = 'initial timestep_end'
[]
[rod_total_power]
type = ScalePostprocessor
value = rod_total_power_model
scaling_factor = 1.0
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.03
execute_on = 'initial timestep_end'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
[checkpoint]
type = Checkpoint
time_step_interval = 1
file_base = ckpoint_mortar_dup
num_files = 2
[]
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'fission_gas_released plenum_pressure interior_temp gas_volume'
[]
[]
(examples/fast_mox_sifgrs/input_single_pellet_sifgrs_mox.i)
#This input is is a simple example of FBR MOX fuel analysis.
#In this case we test the application of Sifgrs to FBR MOX using a specific setting for the lower limit of grain-boundary bubble number density.
initial_fuel_density = 10920.4
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temp
density = ${initial_fuel_density}
order = FIRST
family = LAGRANGE
energy_per_fission = 3.28451e-11
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
include_clad = false
clad_top_gap_height = 0.
pellet_quantity = 1
pellet_height = 0.01
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
nx_p = 10
ny_p = 5
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 683 #typical inlet temperature of the sodium
[]
[]
[AuxVariables]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bubble_GB]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0. 70000. 10000000. 10070000.'
y = '0. 35. 35. 0. '
scale_factor = 1000.
[]
[temp_surface]
type = PiecewiseLinear
x = '0. 70000. 10000000. 10070000.'
y = '683. 1000. 1000. 683. '
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0. 70000. 10000000. 10070000.'
y = '0.3 0.5 1.8 0.3 '
scale_factor = 1.e+6
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_zz'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.07
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[thermal_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bubble_GB
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = bottom_central_pellet_node
value = 0.
[]
[imposed_ext_temp]
type = FunctionDirichletBC
boundary = pellet_outer_radial_surface
variable = temp
function = temp_surface
[]
[top_pellet]
variable = temp
type = NeumannBC
value = 0.
boundary = top_of_top_pellet
[]
[bottom_pellet]
variable = temp
type = NeumannBC
value = 0.
boundary = bottom_of_bottom_pellet
[]
[Pressure]
[pressure]
boundary = pellet_outer_radial_surface
function = pressure_ramp
[]
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = 0.07
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet
burnup = burnup
total_densification = 0.1e-02
initial_fuel_density = 10920.4
gas_swelling_model_type = SIFGRS
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius_const = 8.01e-6
diff_coeff_option = TURNBULL_D1_4D2_4D3
bubble_gb_limit = 1.0e+11 #recommended value for fast MOX fuels
[]
[]
[Preconditioning]
[SMP]
type = SMP
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 1.e-08
nl_max_its = 15
nl_rel_tol = 1.e-4
nl_abs_tol = 1.e-10
start_time = 0.
end_time = 10070000
dtmax = 5e+05
dtmin = 1.
[TimeStepper]
type = IterationAdaptiveDT
growth_factor = 3.
dt = 1.e+02
timestep_limiting_function = power_history
max_function_change = 1000.
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = power_history
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
variable = temp
block = pellet
execute_on = 'initial timestep_end'
[]
[burnup_ave]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[burnup_ave_MWdkgU]
type = ScalePostprocessor
value = burnup_ave
scaling_factor = 950.
[]
[fission_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = linear
[]
[fission_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = linear
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fission_gas_produced
execute_on = linear
[]
[bubble_num_grain_boundary_center]
type = ElementalVariableValue
variable = bbl_bdr_2
elementid = 21
[]
[bubble_num_grain_boundary_surface]
type = ElementalVariableValue
variable = bbl_bdr_2
elementid = 30
[]
[bubble_num_grain_boundary_min]
type = ElementExtremeValue
value_type = min
variable = bbl_bdr_2
block = pellet
[]
[swelling_grain_boundary_center]
type = ElementalVariableValue
variable = deltav_v0_bubble_GB
elementid = 21
[]
[swelling_grain_boundary_surface]
type = ElementalVariableValue
variable = deltav_v0_bubble_GB
elementid = 30
[]
[temp_fuel_center]
type = NodalVariableValue
variable = temp
nodeid = 23
[]
[temp_fuel_surface]
type = NodalVariableValue
variable = temp
nodeid = 32
[]
[_dt]
type = TimestepSize
execute_on = linear
[]
[nonlinear_its]
type = NumNonlinearIterations
execute_on = linear
[]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
[console]
type = Console
max_rows = 15
[]
[t]
type = Checkpoint
time_step_interval = 2
num_files = 2
[]
[]
(assessment/MOX/JOYO/MK-II/analysis/MK-II_master_old_bubble_gb_lim.i)
initial_fuel_density = 10920.4
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.07
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.55
pellet_outer_radius = 0.002315
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000085
clad_thickness = 0.00035
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.549
elem_type = QUAD8
nx_c = 4
ny_c = 100
nx_p = 10
ny_p = 100
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = '0 70000 12697021'
y = '0 48827.8 48827.8'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 70000 12697021'
y = '0 2.6e+19 2.6e+19'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0 0.065 0.134 0.202 0.271 0.339 0.406 0.519'
y = '0 12697021'
z = '0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672 0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = '0 70000 12697021'
y = '0 40000 40000'
[]
[clad_surface_temp]
type = PiecewiseBilinear
x = '0 0.065 0.134 0.202 0.271 0.339 0.406 0.519'
y = '0 12697021'
z = '295 295 295 295 295 295 295 295 416.36 422.49 428.63 434.27 439.36 444.71 450.07 455.48'
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[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
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.07
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.00463
execute_on = timestep_begin
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp_clad_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_surface_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 101325
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 300000
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10920.4
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
diff_coeff_option = TURNBULL_D1_4D2_4D3
fission_rate = fission_rate
grain_radius_const = 8.01e-6
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-2
fixed_point_rel_tol = 1e-2
fixed_point_max_its = 1
l_max_its = 70
l_tol = 8e-3
nl_max_its = 70
nl_rel_tol = 1e-2
nl_abs_tol = 1e-2
start_time = 0
n_startup_steps = 1
end_time = 12697021
dtmax = 2e5
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 5000
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.55 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = MK-II_sub_old_bubble_gb_lim.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'temp disp_x disp_y'
[]
(workshop/bison_example/Discrete_mortar.i)
[GlobalParams]
density = 10431.0
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
family = LAGRANGE
order = SECOND
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'temperature disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = always
patch_size = 100 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[file]
file = discrete.e
type = FileMeshGenerator
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temperature]
initial_condition = 295.0
[]
[disp_x]
block = 'pellet_type_1 clad'
[]
[disp_y]
block = 'pellet_type_1 clad'
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
strain = FINITE
temperature = temperature
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
strain = FINITE
temperature = temperature
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = 'pellet_type_1 clad'
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fis_gas_released
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = 5
secondary = 10
c_normal = 1e+11
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 0.987775
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[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 = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temperature
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 = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
fuel_pin_geometry = fuel_pin_geometry
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
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 = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temperature
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 = temperature
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 = temperature
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
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temperature
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-6 NONZERO 1e-13'
snesmf_reuse_base = false
line_search = 'none'
l_max_its = 20
l_tol = 8e-3
nl_max_its = 60
nl_rel_tol = 1e-4
nl_abs_tol = 1e-12 # LM
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 1e6
dtmin = 1
automatic_scaling = true
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 50
iteration_window = 2
growth_factor = 2
cutback_factor = .5
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temperature
execute_on = 'initial linear'
[]
[ave_fuel_temp]
type = ElementAverageValue
block = pellet_type_1
variable = temperature
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[_dt] # time step
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[fuel_centerline_temp]
type = NodalVariableValue
variable = temperature
nodeid = 2369
[]
[fuel_surface_mid_temp]
type = NodalVariableValue
variable = temperature
nodeid = 2887
[]
[fuel_surface_ridge_temp]
type = NodalVariableValue
variable = temperature
nodeid = 2862
[]
[clad_surface_temp]
type = NodalVariableValue
variable = temperature
nodeid = 7322
[]
[penetration_mid]
type = NodalVariableValue
variable = penetration
nodeid = 2887
[]
[penetration_ridge]
type = NodalVariableValue
variable = penetration
nodeid = 2862
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'timestep_end'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(examples/TRISO/accident_simulation/triso2D_accident.i)
# This example is 2D-RZ analysis of a TRISO fuel particle. Fully coupled
# heat transfer and solid mechanics, plus diffusion of the fission product
# species cesium (Cs) are simulated. The mesh includes contact surfaces
# between the buffer and IPyC layers to facilitate a gap opening between
# these layers. These surfaces are initially in mechanical contact but
# are assumed to have no strength in tension. A coarse mesh is used to
# provide a short run time.
# The calculation simulates fuel-life in three steps. The first step is an
# irradiation period, where constant power and a fixed particle surface
# temperature (1500 K) are assumed over a lifetime of 76 Ms (2.4 yrs).
# For the second step, fuel removal and storage are simulated by setting
# the reactor power and Cs source terms to zero, reducing the particle
# surface temperature to ambient (300 K), and then holding it
# for 100 days. A third and final step simulates accident
# behavior by increasing the particle surface temperature from ambient
# to 2073 K over 2 hrs, and then holding it at this elevated temperature
# for an additional 200 hrs. At the particle outer boundary, the Cs
# concentration is held at zero and the pressure at ambient during the
# entire simulation. The particle is assumed to be stress-free at an
# initial temperature of 1500 K.
#
# Details about this simulation are given in Section 4 of the following
# article: J. D. Hales, R. L. Williamson, S. R. Novascone, D. M. Perez,
# B. W. Spencer and G. Pastore, "Multidimensional multiphysics simulation
# of TRISO particle fuel", Journal of Nuclear Materials, Vol. 443, p. 531,
# 2013.
initial_fuel_density = 11000.0
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
flux_conversion_factor = 0.85
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = triso2Dmed.e
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 1500.0
[]
[conc]
initial_condition = 0.0
[]
[]
[AuxVariables]
[fission_rate]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[fluence]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gap_condSlave]
order = CONSTANT
family = MONOMIAL
[]
[creep_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_yy]
order = CONSTANT
family = MONOMIAL
[]
[creep_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 76e6 76.001e6'
y = '1 1 0'
[]
[temp_bc]
type = PiecewiseLinear
x = '0 76e6 76.001e6 84.641e6 84.6482e6'
y = '1500 1500 300 300 2073'
[]
[k_function]
type = PiecewiseLinear
x = '0 200e6'
y = '4e-37 4e-37'
[]
[d1_function]
type = ParsedFunction
expression = 'exp(t/4.5e25)'
[]
[d_gap]
type = PiecewiseLinear
x = '1500 2100'
y = '1e-14 1e-12'
[]
[integral_flux_error]
type = ParsedFunction
symbol_names = 'buffer_integral_flux IPyC_integral_flux'
symbol_values = 'buffer_integral_flux IPyC_integral_flux'
expression = 'IPyC_integral_flux + buffer_integral_flux'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx hydrostatic_stress'
strain = FINITE
incremental = true
add_variables = false
[default]
block = 'fuel buffer IPyC OPyC'
eigenstrain_names = 'thermal_strain swelling_strain'
extra_vector_tags = 'ref'
[]
[SiC]
block = 'SiC'
eigenstrain_names = 'thermal_strain'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[mass_ie]
type = TimeDerivative
variable = conc
extra_vector_tags = 'ref'
[]
[mass]
type = ArrheniusDiffusion
variable = conc
extra_vector_tags = 'ref'
[]
[mass_source]
type = BodyForce
variable = conc
function = power_history
value = 1.22e-5 # units of moles/m**3-s
block = fuel
extra_vector_tags = 'ref'
[]
[mass_decay]
type = Decay
variable = conc
radioactive_decay_constant = 7.297e-10 # units:(1/sec) The constant for Cesium
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = fuel
fission_rate_function = power_history
value = 3.89e19
execute_on = timestep_begin
[]
[fluence]
type = MaterialRealAux
property = fast_neutron_fluence
variable = fluence
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
execute_on = timestep_begin
density = ${initial_fuel_density}
[]
[creep_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_xx
index_i = 0
index_j = 0
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[creep_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_yy
index_i = 1
index_j = 1
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[creep_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_zz
index_i = 2
index_j = 2
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[conductanceSlave]
type = MaterialRealAux
property = gap_conductance
variable = gap_condSlave
boundary = BufferGapBndry
execute_on = linear
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 15
secondary = 17
penalty = 1e5
model = frictionless
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 15
secondary = 17
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
gap_geometry_type = CYLINDER
tangential_tolerance = 1e-6
roughness_coef = 0.0
quadrature = true
[]
[cesium_contact]
type = GapHeatTransfer
variable = conc
primary = 15
secondary = 17
tangential_tolerance = 1e-6
gap_conductivity_function = d_gap
gap_conductivity_function_variable = temp
appended_property_name = _conc
emissivity_primary = 0
emissivity_secondary = 0
quadrature = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
extra_vector_tags = 'ref'
[]
[no_disp_y]
type = DirichletBC
variable = disp_y
boundary = yzero
value = 0.0
extra_vector_tags = 'ref'
[]
# fix temperature on free surface
[freesurf_temp]
type = FunctionDirichletBC
variable = temp
boundary = exterior
function = temp_bc
extra_vector_tags = 'ref'
[]
# fix concentration on free surface
[freesurf_conc]
type = DirichletBC
variable = conc
boundary = exterior
value = 0.0
extra_vector_tags = 'ref'
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = BufferGapVol
initial_pressure = 0
startup_time = 1.0e4
R = 8.3145
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = volumeGas # coupling to post processor to get gas volume
material_input = 'fis_gas_released co_production' # coupling to post processor to get fission gas added, co added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 5e17
[]
[fission_gas_release] # Sifgrs fission gas release mode
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius_const = 5.0e-6
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
initial_porosity = 0.0
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = fuel
temperature = temp
burnup = burnup
eigenstrain_name = 'swelling_strain'
initial_fuel_density = ${initial_fuel_density}
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 'fuel'
[]
[fuel_elasticity]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.2e11
poissons_ratio = .345
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density} # kg/m^3
[]
[fuel_conc]
type = ArrheniusDiffusionCoef
block = fuel
d1 = 5.6e-8 # m^2/s
q1 = 209.0e+3 # J/mol
d2 = 5.2e-4 # m^2/s
q2 = 362.0e+3 # J/mol
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[buffer_eigenstrain]
type = PyCIrradiationEigenstrain
block = buffer
pyc_type = buffer
eigenstrain_name = 'swelling_strain'
[]
[buffer_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = buffer
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[buffer_elasticity]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e10
poissons_ratio = .23
[]
[buffer_stress]
type = PyCCreep
block = buffer
temperature = temp
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000.0 #kg/m^3
block = buffer
[]
[buffer_conc]
type = ArrheniusDiffusionCoef
block = buffer
d1 = 1.0e-12 # m^2/s
q1 = 0.0
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC buffer'
[]
[IPyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = IPyC
pyc_type = dense
eigenstrain_name = 'swelling_strain'
[]
[IPyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = IPyC
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[IPyC_elasticity]
type = ComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 4.74e10
poissons_ratio = .23
[]
[IPyC_disp]
type = PyCCreep
block = 'IPyC OPyC'
temperature = temp
[]
[IPyC_temp]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[IPyC_den]
type = StrainAdjustedDensity
block = 'IPyC OPyC'
strain_free_density = 1900.0
[]
[IPyC_conc]
type = ArrheniusDiffusionCoef
block = IPyC
d1 = 6.3e-8
q1 = 222.0e+3
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[SiC_elasticity]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.4e11
poissons_ratio = .13
[]
[SiC_creep]
type = MonolithicSiCCreepUpdate
block = SiC
temperature = temp
k_function = k_function
[]
[SiC_stress]
type = ComputeMultipleInelasticStress
block = SiC
tangent_operator = elastic
inelastic_models = 'SiC_creep'
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3180.0 # kg/m^3
block = SiC
[]
[SiC_conc]
type = ArrheniusDiffusionCoef
block = SiC
d1 = 5.5e-14 # m^2/s
d1_function = d1_function
d1_function_variable = fluence
q1 = 125.0e+3 # J/mol
d2 = 1.6e-2 # m^2/s
q2 = 514.0e+3 # J/mol
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[OPyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = OPyC
pyc_type = dense
eigenstrain_name = 'swelling_strain'
[]
[OPyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = OPyC
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[OPyC_elasticity]
type = ComputeIsotropicElasticityTensor
block = OPyC
youngs_modulus = 4.74e10
poissons_ratio = .23
[]
[OPyC_conc]
type = ArrheniusDiffusionCoef
block = OPyC
d1 = 6.3e-8 # m^2/s
q1 = 222.0e+3 # J/mol
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_rel_tol = 5e-4
nl_abs_tol = 1e-9
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 85.3682e6
dt = 100
dtmax = 2e6
dtmin = 1
automatic_scaling = true
compute_scaling_once = false
scaling_group_variables = 'conc; disp_x disp_y; temp'
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 6
growth_factor = 1.5
linear_iteration_ratio = 100
time_t = '0 76e6 76.001e6 84.641e6 84.6482e6'
time_dt = '20 20 20 20 20'
[]
[Predictor]
type = SimplePredictor
scale = 1
skip_times_old = '0 76e6 76.001e6 84.641e6 84.6482e6'
[]
[Quadrature]
order = THIRD
side_order = FIFTH
[]
[]
[Outputs]
perf_graph = true
exodus = true
[console]
type = Console
max_rows = 25
[]
[csv]
type = CSV
sync_times = '100 6308007 75696087'
sync_only = true
[]
[]
[Postprocessors]
[Cs_release]
type = SideIntegralMassFlux
variable = conc
boundary = exterior
execute_on = timestep_end
[]
[dt]
type = TimestepSize
execute_on = timestep_end
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
execute_on = 'initial timestep_end'
[]
[volumeFuel]
type = InternalVolume
boundary = fuel
execute_on = 'initial timestep_end'
[]
[volumeGas]
type = InternalVolume
boundary = BufferGapVol
# ro = 3.125e-4
# ri = 2.125e-4
# vb = 4/3*pi*(ro^3-ri^3) = 8.76e-11
# buffer density = 1000
# PyC density = 1900
# fill ratio = 10/19
# vb*10/19 = 4.6e-11
# Must remove 4.6e-11 m^3 from the volume
addition = -4.6e-11
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = BufferGapVol
execute_on = 'initial timestep_end'
[]
[ave_temp_interior]
type = SideAverageValue
boundary = BufferGapVol
variable = temp
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[avg_surface_temp]
type = SideAverageValue
variable = temp
boundary = exterior
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[buffer_avg_conc]
type = SideAverageValue
variable = conc
boundary = 17
[]
[IPyC_avg_conc]
type = SideAverageValue
variable = conc
boundary = 15
[]
[buffer_integral_flux]
type = SideIntegralMassFlux
variable = conc
boundary = 17
[]
[IPyC_integral_flux]
type = SideIntegralMassFlux
variable = conc
boundary = 15
[]
[integral_flux_error]
type = FunctionValuePostprocessor
function = integral_flux_error
[]
[integral_Cs_release]
type = TimeIntegratedPostprocessor
value = Cs_release
[]
[Cs_production]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 1.22e-5 # units of moles/m**3-s
[]
[time_integral_Cs_production]
type = TimeIntegratedPostprocessor
value = Cs_production
[]
[volumeFuel_initial]
type = InternalVolume
boundary = fuel
execute_on = initial
[]
[integral_Cs_production]
type = ParsedPostprocessor
pp_names = 'time_integral_Cs_production volumeFuel_initial'
expression = 'time_integral_Cs_production * volumeFuel_initial'
[]
[Cs_release_fraction]
type = ParsedPostprocessor
pp_names = 'integral_Cs_release integral_Cs_production'
expression = 'integral_Cs_release / integral_Cs_production'
[]
[]
[VectorPostprocessors]
[temperaturevpp]
type = SideValueSampler
boundary = 11
variable = temp
sort_by = x
outputs = 'csv'
use_displaced_mesh = true
[]
[]
(test/tests/triso/base_irradiation/triso1D_accident.i)
initial_fuel_density = 11000.0
[GlobalParams]
density = ${initial_fuel_density} # kg/m^3
order = SECOND
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[mesh]
type = FileMeshGenerator
file = triso1DFineTruss3.e
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1500.0
[]
[conc_Cs]
initial_condition = 0.0
scaling = 1e18
[]
[]
[AuxVariables]
[fission_rate]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_fluence]
order = CONSTANT
family = MONOMIAL
[]
[gap_condSlave]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 76e6 76.001e6'
y = '1 1 0'
[]
[fission_rate]
type = LinearCombinationFunction
functions = power_history
w = 3.89e19
[]
[temp_bc]
type = PiecewiseLinear
x = '0 76e6 76.001e6 84.641e6 84.6482e6'
y = '1500 1500 300 300 2073'
[]
[k_function]
type = PiecewiseLinear
x = '0 200e6'
y = '4e-37 4e-37'
[]
[d1_function]
type = ParsedFunction
expression = 'exp(t/4.5e25)'
[]
[d_gap]
type = PiecewiseLinear
x = '1500 2100'
y = '1e-14 1e-12'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = fuel
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_swelling'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[buffer]
block = buffer
add_variables = false
strain = FINITE
eigenstrain_names = 'buffer_thermal_strain buffer_eigenstrain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
extra_vector_tags = 'ref'
[]
[IPyC]
block = IPyC
add_variables = false
strain = FINITE
eigenstrain_names = 'IPyC_eigenstrain IPyC_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
extra_vector_tags = 'ref'
[]
[SiC]
block = SiC
add_variables = false
strain = FINITE
eigenstrain_names = 'SiC_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
extra_vector_tags = 'ref'
[]
[OPyC]
block = OPyC
add_variables = false
strain = FINITE
eigenstrain_names = 'OPyC_eigenstrain OPyC_thermal_strain'
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[mass_ie]
type = TimeDerivative
variable = conc_Cs
extra_vector_tags = 'ref'
[]
[mass]
type = ArrheniusDiffusion
variable = conc_Cs
extra_vector_tags = 'ref'
[]
[mass_source]
type = BodyForce
variable = conc_Cs
function = power_history
value = 1.22e-5 # units of mol/m**3-s
block = fuel
extra_vector_tags = 'ref'
[]
[mass_decay]
type = Decay
variable = conc_Cs
radioactive_decay_constant = 7.297e-10 # units:(1/sec) The constant for Cesium
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = MaterialRealAux
variable = fission_rate
property = fission_rate
block = fuel
execute_on = timestep_begin
[]
[burnup]
type = BurnupAux
variable = burnup
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mol
block = fuel
execute_on = timestep_begin
[]
[fast_neutron_flux]
type = MaterialRealAux
variable = fast_neutron_flux
property = fast_neutron_flux
block = 'fuel buffer IPyC SiC OPyC'
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = MaterialRealAux
variable = fast_neutron_fluence
property = fast_neutron_fluence
block = 'fuel buffer IPyC SiC OPyC'
execute_on = timestep_begin
[]
[conductanceSlave]
type = MaterialRealAux
property = gap_conductance
variable = gap_condSlave
boundary = BufferGapBndry
execute_on = 'initial timestep_end'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 15
secondary = 17
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 15
secondary = 17
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
roughness_primary = 0e-6
roughness_secondary = 0e-6
jumpdistance_primary = 0
jumpdistance_secondary = 0
quadrature = true
emissivity_secondary = 0.0
emissivity_primary = 0.0
min_gap = 1e-7
max_gap = 50e-6
gap_geometry_type = sphere
[]
[cesium_contact]
type = GapHeatTransfer
variable = conc_Cs
primary = 15
secondary = 17
tangential_tolerance = 1e-6
gap_conductivity_function = d_gap
gap_conductivity_function_variable = temperature
appended_property_name = _conc
quadrature = true
gap_geometry_type = sphere
emissivity_primary = 0.0
emissivity_secondary = 0.0
min_gap = 1e-7
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = FunctionDirichletBC
variable = temperature
boundary = exterior
function = temp_bc
[]
# fix concentration on free surface
[freesurf_conc]
type = DirichletBC
variable = conc_Cs
boundary = exterior
value = 0.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
# apply plenum pressure on clad inner walls and pellet surfaces
[PlenumPressure]
[plenumPressure]
boundary = BufferGapVol
initial_pressure = 100
startup_time = 0
R = 8.3145
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC buffer'
[]
[fission_rate]
type = GenericFunctionMaterial
prop_names = fission_rate
prop_values = fission_rate
[]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
flux_function = power_history
factor = 5e17
[]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = FINK_LUCUTA
initial_porosity = 0.0
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.2e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = fuel
temperature = temperature
burnup = burnup
eigenstrain_name = fuel_swelling
initial_fuel_density = ${initial_fuel_density}
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 1500.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
[]
[fuel_conc]
type = ArrheniusDiffusionCoef
block = fuel
d1 = 5.6e-8 # m^2/s
q1 = 209.0e+3 # J/mol
d2 = 5.2e-4 # m^2/s
q2 = 362.0e+3 # J/mol
gas_constant = 8.3143 # J/K-mol
temperature = temperature
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2.0e10
poissons_ratio = 0.23
[]
[buffer_stress]
type = PyCCreep
block = buffer
flux_conversion_factor = 1.0
temperature = temperature
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000.0 #kg/m^3
block = buffer
[]
[buffer_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = buffer
thermal_expansion_coeff = 5.65e-6
temperature = temperature
stress_free_temperature = 1500.0
eigenstrain_name = buffer_thermal_strain
[]
[buffer_irraditation]
type = PyCIrradiationEigenstrain
block = buffer
pyc_type = buffer
eigenstrain_name = buffer_eigenstrain
[]
[buffer_conc]
type = ArrheniusDiffusionCoef
block = buffer
d1 = 1.0e-12 # m^2/s
q1 = 0.0
d2 = 0.0
q2 = 0.0
temperature = temperature
[]
[IPyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 4.74e10
poissons_ratio = 0.23
[]
[IPyC_stress]
type = PyCCreep
block = IPyC
flux_conversion_factor = 1.0
temperature = temperature
[]
[IPyC_temp]
type = HeatConductionMaterial
block = IPyC
thermal_conductivity = 4.0 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[IPyC_den]
type = StrainAdjustedDensity
strain_free_density = 1900.0 # kg/m^3
block = IPyC
[]
[IPyC_densification]
type = PyCIrradiationEigenstrain
block = IPyC
pyc_type = dense
eigenstrain_name = IPyC_eigenstrain
[]
[IPyC_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = IPyC
thermal_expansion_coeff = 5.65e-6
temperature = temperature
stress_free_temperature = 1500.0
eigenstrain_name = IPyC_thermal_strain
[]
[IPyC_conc]
type = ArrheniusDiffusionCoef
block = IPyC
d1 = 6.3e-8 # m^2/s
q1 = 222.0e+3 # J/mol
d2 = 0.0
q2 = 0.0
temperature = temperature
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.4e11
poissons_ratio = 0.13
[]
[monolithic_SiC_creep]
type = MonolithicSiCCreepUpdate
block = SiC
fast_neutron_flux = fast_neutron_flux
temperature = temperature
k_function = k_function
[]
[stress]
type = ComputeMultipleInelasticStress
inelastic_models = monolithic_SiC_creep
block = SiC
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3180.0 # kg/m^3
block = SiC
[]
[SiC_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
temperature = temperature
stress_free_temperature = 1500.0
eigenstrain_name = SiC_thermal_strain
[]
[SiC_conc]
type = ArrheniusDiffusionCoef
block = SiC
d1 = 5.5e-14 # m^2/s
d1_function = d1_function
d1_function_variable = fast_neutron_fluence
q1 = 125.0e+3 # J/mol
d2 = 1.6e-2 # m^2/s
q2 = 514.0e+3 # J/mol
temperature = temperature
[]
[OPyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = OPyC
youngs_modulus = 4.74e10
poissons_ratio = 0.23
[]
[OPyC_stress]
type = PyCCreep
block = OPyC
flux_conversion_factor = 1.0
temperature = temperature
[]
[OPyC_temp]
type = HeatConductionMaterial
block = OPyC
thermal_conductivity = 4.0 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[OPyC_den]
type = StrainAdjustedDensity
strain_free_density = 1900.0 # kg/m^3
block = OPyC
[]
[OPyC_densification]
type = PyCIrradiationEigenstrain
block = OPyC
pyc_type = dense
eigenstrain_name = OPyC_eigenstrain
[]
[OPyC_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = OPyC
thermal_expansion_coeff = 5.65e-6
temperature = temperature
stress_free_temperature = 1500.0
eigenstrain_name = OPyC_thermal_strain
[]
[OPyC_conc]
type = ArrheniusDiffusionCoef
block = OPyC
d1 = 6.3e-8 # m^2/s
q1 = 222.0e+3 # J/mol
d2 = 0.0
q2 = 0.0
temperature = temperature
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_rel_tol = 5e-8
nl_abs_tol = 1e-7
nl_max_its = 15
l_tol = 1e-8
l_max_its = 50
start_time = 0.0
#end_time = 85.3682e6
end_time = 1e3
num_steps = 1000
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
time_t = '0 76e6 76.001e6 84.641e6 84.6482e6'
time_dt = '20 20 20 20 20'
growth_factor = 1.5
optimal_iterations = 8
linear_iteration_ratio = 100
[]
[Quadrature]
order = THIRD
[]
[]
[Postprocessors]
[release_Cs_inc]
type = SideIntegralMassFlux
variable = conc_Cs
boundary = exterior
[]
[Int_Cs_release]
type = TimeIntegratedPostprocessor
value = release_Cs_inc
[]
[release_fuel_Cs]
type = SideIntegralMassFlux
variable = conc_Cs
boundary = fuel
[]
[Int_Cs_release_fuel]
type = TimeIntegratedPostprocessor
value = release_fuel_Cs
[]
[release_PyCGapBndry_Cs]
type = SideIntegralMassFlux
variable = conc_Cs
boundary = PyCGapBndry
[]
[Int_Cs_release_PyCGapBndry]
type = TimeIntegratedPostprocessor
value = release_PyCGapBndry_Cs
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
execute_on = linear
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
execute_on = linear
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
execute_on = 'initial timestep_end'
[]
[volumeFuel]
type = InternalVolume
boundary = fuel
execute_on = 'initial timestep_end'
[]
[volumeGas]
type = InternalVolume
boundary = BufferGapVol
addition = -4.6e-11
execute_on = 'initial linear'
[]
[volumeBufferShell]
type = InternalVolume
boundary = BufferGapVol
execute_on = 'initial timestep_end'
[]
[ave_temp_interior]
type = SideAverageValue
boundary = BufferGapVol
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
outputs = exodus
execute_on = 'initial linear'
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_surface_temp]
type = SideAverageValue
variable = temperature
boundary = exterior
outputs = exodus
execute_on = 'initial timestep_end'
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
outputs = exodus
execute_on = 'initial timestep_end'
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
execute_on = 'initial nonlinear'
[]
[]
[Outputs]
print_linear_residuals = false
[console]
type = Console
max_rows = 5
outlier_variable_norms = false
[]
[exodus]
type = Exodus
file_base = triso1D_accident_out
[]
[]
(test/tests/ifba_he_production/doc/fill_gas_xenon.i)
#
# 2-D RZ One Pellet Test - Using Xenon as fill gas
#
# This test is of a single pellet with cladding and a specified initial
# pressure of Xe fill gas.
#
# This model results in a upper limit for the interior_temp due to the type of
# fill gas used.
#
[GlobalParams]
density = 10431.0 #95% TD (TD = 10980)
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 4
nx_p = 6
nx_c = 3
ny_cu = 3
ny_c = 4
ny_cl = 3
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
displacements = 'disp_x disp_y'
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = '3'
initial_condition = 5e-6 # must be the same as the initial value in Sifgr
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = '3'
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
# CoolantChannel requires this to have units while axial_peaking_factors must be normalized.
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 20e3 # 20 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[q] # this is for fuel_relocation
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[]
[SolidMechanics]
[solid]
temperature = temp
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_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
#convert W/m from power profile to fission/m**3-s
#calculated as 1/(energy_per_fission*area)
#using energy_per_fission = 3.2e-11, consistent with 200 MeV/fission
value = 5.3548e+14
fission_rate_function = q
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
# If you divide flux/power, you get this constant factor
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = '3'
variable = gas_swell
property = deltav_v0_bd
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = fis_gas_released
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_gas_types = Xe
initial_fractions = 1
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
# pin entire clad bottom in y
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
# pin fuel bottom in y
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
# pin fuel axis in x and z
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
startup_time = 0.0
material_input = fis_gas_released
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
displacements = 'disp_x disp_y'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_swelling]
type = VSwellingUO2
block = '3'
temperature = temp
burnup = burnup
gas_swelling_type = sifgrs
[]
[fuel_solid_mechanics_elastic]
type = Elastic
block = '3'
temperature = temp
youngs_modulus = 2.e11
poissons_ratio = 0.345
thermal_expansion = 10.0e-6
dep_matl_props = deltav_v0_bd
[]
[fission_gas_release]
type = Sifgrs
block = '3'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_solid_mechanics]
type = SolidModel
block = 1
temperature = temp
youngs_modulus = 7.5e10
poissons_ratio = 0.3
thermal_expansion = 5.0e-6
constitutive_model = clad_plasticity
[]
[clad_growth]
type = IrradiationGrowthZr4
block = 1
fast_neutron_fluence = fast_neutron_fluence
growth_direction = 1
[]
[clad_plasticity]
type = IsotropicPlasticity
block = 1
temperature = temp
yield_stress = 550e6
hardening_constant = 2.5e9
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 25.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x'
off_diag_column = 'disp_x'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 2.0e7 # Stop run before contact between pellet and clad occurs
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e5 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01 # change: length of fuel stack in meters (1 pellet height)
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[out]
type = CSV
delimiter = ' '
[]
[]
(assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim_DiffCoeff4.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.2
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9144
pellet_outer_radius = 2.794e-3
pellet_inner_radius = 6.985e-4
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 101.6e-6
clad_thickness = 0.5334e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.057
elem_type = QUAD8
nx_c = 4
ny_c = 1000
nx_p = 10
ny_p = 500
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
scaling = 1
[]
[]
[AuxVariables]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fraction_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 0.854004932 0.854004932'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 2.99513e+19 2.99513e+19'
[]
[axial_power_profile]
type = PiecewiseBilinear
x = '0.0334152 0.09468 0.1559448 0.2162952 0.27756 0.3388248 0.3991752 0.46044 0.5217048 0.5820552 0.64332 0.7045848 0.7649352 0.8262 0.8874648'
y = '0 31858942.74'
z = '5493.43832 7183.727034 29157.48031 34228.34646 37608.92388 40144.35696 41412.07349 42257.21785 41834.64567 39721.78478 37608.92388 33805.77428 28312.33596 4225.721785 2535.433071 5041.338583 6592.519685 26757.87402 31411.41732 34513.77953 36840.55118 38003.93701 38779.52756 38391.73228 36452.75591 34513.77953 31023.62205 25982.28346 3877.952756 2326.771654'
scale_factor = 1
axis = 1
[]
[average_power_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 24264.05646 24264.05646'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[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
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.2
axial_power_profile = axial_power_profile
rod_ave_lin_pow = fraction_history
pellet_diameter = 0.005588
execute_on = timestep_begin
pellet_inner_diameter = 0.001397
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 0.151e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 0.151e6
inlet_massflux = 1687.43
rod_diameter = 6.858e-3
rod_pitch = 1.7e-2
linear_heat_rate = fraction_history
axial_power_profile = axial_power_profile
coolant_material = sodium
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = 0.2
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
outputs = exodus
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
diff_coeff_option = TURNBULL_D1_4D2_4D3
grain_radius_const = 10e-06
bubble_gb_limit = 1.0e+11
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fast_neutron_flux]
type = GenericFunctionMaterial
block = clad
prop_names = fast_neutron_flux
prop_values = fast_neutron_flux_function
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 31858942.74
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = fraction_history
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.9144 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = fftf_fo2_L09_new_DiffCoeff4_chkfile
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/sifgrs/uo2/chromia_doped.i)
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
x = '0. 2.2e7'
y = '300. 2500.'
scale_factor = 1
[]
[Fiss_func]
type = PiecewiseLinear
x = '0 2.2e7'
y = '1.e19 1.e19'
[]
[]
[Variables]
[T]
initial_condition = 300.
[]
[]
[AuxVariables]
[fission_rate]
initial_condition = 1.e19
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_end'
[]
[eff_diffusion_coefficient]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = 'initial timestep_end'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
temperature = T
fission_rate = fission_rate
skip_bdr_model = true
eff_diff_coeff_option = BULK
diff_coeff_option = TURNBULL_D1_4D2_4D3
doping_type = CR2O3_DOPED
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
start_time = 0.0
num_steps = 22
dt = 1e6
[]
[Postprocessors]
[temperature]
type = FunctionValuePostprocessor
function = Temp_func
execute_on = 'initial timestep_end'
[]
[fission_rate]
type = FunctionValuePostprocessor
function = Fiss_func
execute_on = 'initial timestep_end'
[]
[diffusion_coefficient]
type = ElementalVariableValue
elementid = 0
variable = eff_diff_coeff
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
execute_on = 'initial timestep_end'
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[]
[Outputs]
exodus = true
[console]
type = Console
output_linear = true
max_rows = 23
[]
[]
(test/tests/triso_failure/triso_1d_layer_stress_strength.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DFiveLayerMeshGenerator
elem_type = EDGE3
kernel_radius = 2.485e-4
buffer_thickness = 9.4e-5
IPyC_thickness = 4.1e-5
SiC_thickness = 3.6e-5
OPyC_thickness = 4.0e-5
kernel_mesh_density = 6
buffer_mesh_density = 6
IPyC_mesh_density = 6
SiC_mesh_density = 8
OPyC_mesh_density = 6
[]
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19 # units of fissions/m**3
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '100 100'
[]
[ipyc_stress_strength]
type = ParsedFunction
expression = 'a-b'
symbol_names = 'a b'
symbol_values = 'stress_IPyC actual_strength_IPyC'
[]
[opyc_stress_strength]
type = ParsedFunction
expression = 'a-b'
symbol_names = 'a b'
symbol_values = 'stress_OPyC actual_strength_OPyC'
[]
[sic_crackedipyc_stress_strength]
type = ParsedFunction
expression = 'a-b'
symbol_names = 'a b'
symbol_values = 'stress_SiC_crackedIPyC actual_strength_SiC_crackedIPyC'
[]
[sic_crackedopyc_stress_strength]
type = ParsedFunction
expression = 'a-b'
symbol_names = 'a b'
symbol_values = 'stress_SiC_crackedOPyC actual_strength_SiC_crackedOPyC'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
use_automatic_differentiation = true
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat]
type = HeatConduction
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
# contact_pressure_input = 10e6
# quadrature = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = DirichletBC
variable = temp
boundary = exterior
value = 1346.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
# apply gas pressure on buffer and IPyC boundaries
[PlenumPressure]
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[max_principal_stress]
type = RankTwoInvariant
property_name = max_principal_stress
rank_two_tensor = stress
invariant = MaxPrincipal
[]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temp
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_temp]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength_SiC]
type = GenericConstantMaterial
prop_values = '9640000'
prop_names = 'characteristic_strength'
block = SiC
[]
[characteristic_strength_PyC]
type = GenericConstantMaterial
prop_values = '964000'
prop_names = 'characteristic_strength'
block = 'IPyC OPyC'
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temp
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temp
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = WeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
[]
[stress_SiC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_SiC
output_type = 'stress'
[]
[actual_strength_SiC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_SiC
output_type = 'strength'
[]
[strength_IPyC]
type = WeibullEffectiveMeanStrength
block = IPyC
weibull_modulus = 6
[]
[stress_IPyC]
type = WeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_IPyC
output_type = 'stress'
[]
[actual_strength_IPyC]
type = WeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_IPyC
output_type = 'strength'
[]
[IPyC_stressminusstrength]
type = FunctionValuePostprocessor
function = 'ipyc_stress_strength'
[]
[strength_OPyC]
type = WeibullEffectiveMeanStrength
block = OPyC
weibull_modulus = 6
[]
[stress_OPyC]
type = WeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_OPyC
output_type = 'stress'
[]
[actual_strength_OPyC]
type = WeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_OPyC
output_type = 'strength'
[]
[OPyC_stressminusstrength]
type = FunctionValuePostprocessor
function = 'opyc_stress_strength'
[]
[stress_SiC_crackedIPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
output_type = 'stress'
[]
[actual_strength_SiC_crackedIPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
output_type = 'strength'
[]
[SiC_crackedIPyC_stressminusstrength]
type = FunctionValuePostprocessor
function = 'sic_crackedipyc_stress_strength'
[]
[stress_SiC_crackedOPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
output_type = 'stress'
[]
[actual_strength_SiC_crackedOPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
output_type = 'strength'
[]
[SiC_crackedOPyC_stressminusstrength]
type = FunctionValuePostprocessor
function = 'sic_crackedopyc_stress_strength'
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
perf_graph = true
[]
(test/tests/sifgrs/uo2/grain_growth.i)
# This test aims at demonstrating the coupling of the Sifgrs fission gas behavior
# model with the grain growth model (GrainRadiusAux). As the grains grow, the
# moving grain boundaries act as filters and contribute to the collection of gas
# at the grain boundaries (grain boundary sweeping). This effect is taken into
# account in the Sifgrs model by adding a supplementary fractional release term
# from within grains to grain boundaries that is equal to the volume fraction of
# the fuel swept by the moving boundaries. For this purpose, Sifgrs is coupled
# with the grain growth model and incorporates a specific grain boundary sweeping
# capability that can be activated by specifying gbs_model = true in the
# fission_gas_release block (see below).
# For the purpose of this test, fission gas swelling is not calculated.
# The gas that reaches the grain boundaries is forced to be instantaneously
# released to the plenum by skipping the grain boundary model
# (skip_bdr_model = true). Starting from an initial value of 5 microns, the grain
# radius increases due to grain growth following the temperature increase.
# At the end of the simulation the grain radius reaches the value of 17.464 microns.
# The results of the test show that gas release due to grain boundary sweeping occurs
# after grain growth commences.
# See also the enclosed file regression_tests_sifgrs.xlsx
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0. 1.e+08'
y = '1000. 1700. '
[]
[fission_rate_function]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[temperature]
initial_condition = 1000
[]
[]
[AuxVariables]
[fission_rate]
[]
[grain_radius]
initial_condition = 5.e-06
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = fission_rate_function
execute_on = 'initial timestep_begin'
[]
[grain_radius]
type = GrainRadiusAux
variable = grain_radius
temperature = temperature
execute_on = 'initial linear'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = temperature
function = temperature_function
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
temperature = temperature
fission_rate = fission_rate
skip_bdr_model = true
grain_radius = grain_radius
gbs_model = true
output_properties = 'gas_concentration_generated_total gas_concentration_intra_total gas_concentration_swept_GB gas_concentration_GB_bubble_volume gas_concentration_release_total'
outputs = 'all'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1.e-10
nl_rel_tol = 1.e-14
start_time = 0.
num_steps = 500
dt = 1.e06
end_time = 1e8
[]
[Postprocessors]
[average_grain_radius]
type = ElementAverageValue
variable = grain_radius
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[intrag_swelling]
type = ElementIntegralMaterialProperty
mat_prop = deltav_v0_intra_total
[]
[gas_amount_bubble_intra]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_bubble_intra
[]
[gas_amount_matrix_intra]
type = ElementIntegralMaterialProperty
mat_prop = gas_concentration_matrix_intra
[]
[bubble_amount_intra]
type = ElementIntegralMaterialProperty
mat_prop = bubble_concentration_intra
[]
[bubble_radius_intra_average]
type = ElementAverageMaterialProperty
mat_prop = bubble_radius_intra
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[]
[Outputs]
csv = true
[]
(assessment/MOX/JOYO/B14/PTM001/analysis/b14_ptm001_2DRZ_t.i)
initial_fuel_density = 11057.75
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.4
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.00008
clad_thickness = 0.00047
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.685
elem_type = QUAD8
nx_c = 4
ny_c = 100
nx_p = 20
ny_p = 100
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
[]
[burnup]
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 39814.5 39814.5 44289.3 44289.3 53927.4 53927.4 0'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 251280'
y = '3.3e+15 3.3e+15'
[]
[f_temp_out_clad]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 634.94 662.273 676.998 686.217 706.339 727 743.358 758.311 780.069 799.077 815.576 846.374 860.233 875.494 882.809 889.8'
scale_factor = 1
axis = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846 0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 34700 34700 38600 38600 47000 47000 0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[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
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.1372
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
porosity = pore
energy_per_fission = 3.2e-11
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[temp_clad_outside]
type = FunctionDirichletBC
variable = temp
function = f_temp_out_clad
boundary = 2
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3145
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
temperature = temp
porosity = pore
block = pellet
Am_content = 0.0237
oxy_to_metal_ratio = 1.982
output_properties = 'thermal_conductivity'
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = ${initial_fuel_density}
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius_const = 14e-06 #I'm keeping the grain radius const because the grain growth in MOX is probably different due to high Temp
bubble_gb_limit = 1.0e+11
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
line_search = 'none'
fixed_point_max_its = 1
fixed_point_abs_tol = 1e-3
fixed_point_rel_tol = 1e-3
l_max_its = 50
l_tol = 8e-3
nl_max_its = 50
nl_rel_tol = 1e-3
nl_abs_tol = 1e-3
start_time = 0
n_startup_steps = 1
end_time = 251280
dtmax = 10000
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e1
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = ElementAverageValue
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
variable = burnup
[]
[ave_pore]
type = ElementAverageValue
block = pellet
variable = pore
[]
[max_pore]
type = NodalExtremeValue
block = pellet
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
block = pellet
value_type = min
variable = pore
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
# variable = temp
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
# variable = temp
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
# variable = temp
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.4 # rod height
[]
[]
[VectorPostprocessors]
[fuel_radial_temperature_Sample1]
type = LineValueSampler
variable = temp
start_point = '0.0 0.283 0.0'
end_point = '0.0027 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample1]
type = LineValueSampler
variable = pore
start_point = '0.0 0.283 0.0'
end_point = '0.0027 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample2]
type = LineValueSampler
variable = temp
start_point = '0.0 0.347 0.0'
end_point = '0.0027 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample2]
type = LineValueSampler
variable = pore
start_point = '0.0 0.347 0.0'
end_point = '0.0027 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample3]
type = LineValueSampler
variable = temp
start_point = '0.0 0.2 0.0'
end_point = '0.0027 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample3]
type = LineValueSampler
variable = pore
start_point = '0.0 0.2 0.0'
end_point = '0.0027 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[line_plot]
type = CSV
execute_on = 'FINAL'
time_step_interval = 1
file_base = 1d
create_final_symlink = true
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = b14_ptm001_pore.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/sifgrs/uo2/ad_percolation_xfem.i)
# This is to test gas release through elements that are cut by XFEM. A 2D domain is
# used and the LineSegmentCutUserObject is used to insert a crack from the right edge
# of the domain inward toward the left edge. Because of the boundary conditions on temperature,
# gas would not normally be released to the free surface on the left side, but
# with the crack present gas release occurs.
[GlobalParams]
density = 10970.
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.005
ymin = 0
ymax = 0.005
nx = 5
ny = 5
[]
[create_block2]
type = RenameBlockGenerator
input = mesh
old_block = 0
new_block = 2
[]
[free1]
type = SideSetsAroundSubdomainGenerator
new_boundary = free1
normal = '1 0 0'
block = 2
input = create_block2
[]
[subdomain1]
type = SubdomainBoundingBoxGenerator
bottom_left = '0 0 0'
top_right = '0.005 0.005 0'
block_id = 2
input = free1
[]
[]
#Create a notch in the mesh using XFEM
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '0.005 0.0025 0.001 0.0025'
time_start_cut = 0.0
time_end_cut = 0.0
[]
[]
[Variables]
[temp]
initial_condition = 673.
[]
[]
[AuxVariables]
[grain_radius]
block = 2
initial_condition = 5.e-06
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = 2
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = 2
[]
[burnup]
block = 2
[]
[fission_rate]
block = 2
[]
# percolation variables
[open_coverage]
order = CONSTANT
family = MONOMIAL
[]
[open_threshold]
order = CONSTANT
family = MONOMIAL
[]
[open]
order = CONSTANT
family = MONOMIAL
[]
[cluster]
order = CONSTANT
family = MONOMIAL
[]
[percolated]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_history]
type = PiecewiseLinear
x = '0. 10800. 1.0e+8'
y = '0. 25. 25. '
scale_factor = 1000.
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0. 1.0e+8'
y = '25. 25.'
scale_factor = 1.0e+6
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = ADHeatConduction
variable = temp
[]
[heat_ie] # time term in heat conduction equation
type = ADHeatConductionTimeDerivative
variable = temp
[]
[heat_source] # source term in heat conduction equation
type = ADNeutronHeatSource
variable = temp
block = 2
fission_rate = fission_rate # coupling to the fission_rate aux variable
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[fggen]
type = ADMaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
[]
[fractcov]
type = ADMaterialRealAux
variable = GBCoverage
property = GBCoverage
block = 2
[]
[fuel_conductivity]
type = ADMaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[brnp]
type = BurnupAux
variable = burnup
block = 2
fission_rate = fission_rate
molecular_weight = 0.270
[]
[frate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 2
value = 5.e+14
fission_rate_function = power_history
[]
# percolation auxkernels
[open_coverage]
type = ADMaterialRealAux
variable = open_coverage
property = GBCoverage
[]
[open_threshold]
type = ADMaterialRealAux
variable = open_threshold
property = 0.3 #GB coverage at which trijunction network is percolated
[]
[open]
type = ParsedAux
variable = open
coupled_variables = 'open_coverage open_threshold'
expression = 'open_coverage-open_threshold'
[]
[cluster]
type = FeatureFloodCountAux
variable = cluster
execute_on = 'timestep_begin'
field_display = UNIQUE_REGION
flood_counter = percolate
[]
[percolated]
type = PercolationAux
variable = percolated
execute_on = 'timestep_begin'
percolation = percolate
[]
[]
# Define boundary conditions
[BCs]
[imposed_ext_temp]
type = DirichletBC
boundary = right
variable = temp
value = 673.
[]
# insulate the top and bottom of this pellet
[top_pellet]
variable = temp
value = 0.
type = NeumannBC
boundary = top
[]
[bottom_pellet]
variable = temp
value = 0.
type = NeumannBC
boundary = bottom
[]
[left_pellet]
variable = temp
value = 0.
type = NeumannBC
boundary = left
[]
[]
# Define material behavior models and input material property data
[Materials]
[fuel_thermal]
type = ADHeatConductionMaterial
block = 2
thermal_conductivity = 3.
specific_heat = 400.
[]
[fuel_density]
type = ADParsedMaterial
block = 2
property_name = density
expression = 10970
[]
[fission_gas_release_and_swelling]
type = ADUO2Sifgrs
block = 2
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING
res_param_option = HETEROGENEOUS_WHITE
temperature = temp
fission_rate = fission_rate
burnup = burnup
initial_porosity = 0.
percolation_to_surface = percolated
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50.
variable = temp
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options = '-ksp_gmres_modifiedgramschmidt'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_composite_pcs -sub_0_pc_hypre_type -sub_0_pc_hypre_boomeramg_max_iter -sub_0_pc_hypre_boomeramg_grid_sweeps_all -sub_1_sub_pc_type -pc_composite_type -ksp_type -mat_mffd_type'
petsc_options_value = '201 composite hypre,asm boomeramg 2 2 lu multiplicative fgmres ds'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 1.0e-06
# controls for nonlinear iterations
nl_max_its = 10
nl_rel_tol = 1.0e-4
nl_abs_tol = 1.0e-8
# time control
start_time = 0.
end_time = 1.0e+8
num_steps = 5000
dtmax = 1.0e+06
dtmin = 1.0
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0
timestep_limiting_function = power_history
max_function_change = 3000.
force_step_every_function_point = true
[]
[Quadrature]
order = THIRD
[]
[]
[UserObjects]
[percolate]
type = PercolationUserObject
execute_on = 'timestep_begin'
boundaries = 'free1'
variable = open
threshold = 0.0
use_xfem = true
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
[ave_burnup_EAV]
type = ElementAverageValue
block = 2
variable = burnup
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 2
[]
[]
# Define output file(s)
[Outputs]
time_step_interval = 1
csv = true
exodus = true
color = true
print_linear_residuals = true
[console]
type = Console
max_rows = 25
output_linear = true
[]
[]
(test/tests/solid_mechanics/u3si2_eigenstrains/u3si2_vswelling/swelling_mechanistic.i)
# This test verifies the overall U3Si2 fgb model through a single element calculation.
# The outcome has been benchmarked against the result of a stand-alone, independent software.
# In this input file, the coupled fgr and gaseous swelling calculation is performed.
initial_fuel_density = 11590.0
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 1250.0
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[burnup]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_intra_total]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_bubble_GB]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = T
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = FINITE
add_variables = true
eigenstrain_names = 'fuelthermal_strain volumetric_swelling'
temperature = T
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1250'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.e19'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[burnup]
type = BurnupAux
variable = burnup
fission_rate = fission_rate
[]
[bbl_cnc]
type = MaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
[]
[rad_bbl]
type = MaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
[]
[gascnc_bbl]
type = MaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
[]
[dvv0gr]
type = MaterialRealAux
variable = deltav_v0_intra_total
property = deltav_v0_intra_total
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bubble_GB
property = deltav_v0_bubble_GB
[]
[]
[BCs]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[left_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[back_z]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1e11
poissons_ratio = 0.17
[]
[fission_gas_behavior]
type = U3Si2Sifgrs
block = 0
temperature = T
fission_rate = fission_rate
grain_radius_const = 28.e-06
[]
[fuel_swelling]
type = U3Si2VolumetricSwellingEigenstrain
temperature = T
burnup = burnup
complete_burnup = 10
eigenstrain_name = volumetric_swelling
gaseous_swelling_type = U3SI2FG
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 0
thermal_expansion_coeff = 1.5e-5
temperature = T
stress_free_temperature = 1250.0
eigenstrain_name = fuelthermal_strain
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 0
[]
[U3Si2_thermal]
type = HeatConductionMaterial
block = 0
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[density]
type = StrainAdjustedDensity
block = 0
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-15
l_tol = 1e-5
start_time = 0.0
dt = 100.
num_steps = 10
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 0
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 0
[]
[gbswelling]
type = ElementAverageValue
variable = deltav_v0_bubble_GB
block = 0
[]
[igswelling]
type = ElementAverageValue
variable = deltav_v0_intra_total
block = 0
[]
[]
[Outputs]
exodus = true
[]
(examples/2D-RZ_rodlet_10pellets/smeared_cracking/ADSmearedCracking.i)
# This model is a higher order, smeared 10 pellet fuel stack (pellet).
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 10
pellet_height = 0.01186
pellet_outer_radius = 4.1e-3
pellet_mesh_density = coarse
clad_mesh_density = coarse
clad_gap_width = 160.0e-6
clad_thickness = 0.56e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 2.6e-2
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[crack_x]
order = CONSTANT
family = MONOMIAL
[]
[crack_y]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e08'
y = '0 2.5e4 2.5e04'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
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'
use_automatic_differentiation = true
[]
[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'
use_automatic_differentiation = true
[]
[]
[Kernels]
[gravity]
type = ADGravity
variable = disp_y
value = -9.81
[]
[heat]
type = ADHeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = ADNeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
RPF = RPF
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.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
variable = grain_radius
temperature = temp
execute_on = linear
[]
[radial_strain]
type = ADRankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = ADMaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[crack_x]
type = ADMaterialRealVectorValueAux
variable = crack_x
property = crack_damage
component = 0
block = pellet
[]
[crack_y]
type = ADMaterialRealVectorValueAux
variable = crack_y
property = crack_damage
component = 1
block = pellet
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
use_automatic_differentiation = true
[]
[]
[BCs]
[no_x_all]
type = ADDirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = ADDirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = ADDirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
use_automatic_differentiation = true
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
use_automatic_differentiation = true
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
use_ad = true
[]
[]
[Materials]
[fuel_thermal]
type = ADUO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[elastic_stress]
type = ADComputeSmearedCrackingStress
block = pellet
cracking_stress = 1.68e8
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
[]
[exponential_softening]
type = ADExponentialSoftening
[]
[fuel_creep]
type = ADUO2CreepUpdate
block = pellet
temperature = temp
fission_rate = fission_rate
initial_grain_radius = 10e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_thermal_expansion]
type = ADComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = ADUO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.035
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
[]
[fuel_volumetric_swelling]
type = ADUO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = ADHeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ADZryElasticityTensor
block = clad
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ADZryCreepLimbackHoppeUpdate
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
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ADZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ADZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[fission_gas_release]
type = ADUO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = ADStrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = ADStrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
verbose = false
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 1.0e8
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ADElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_grain]
type = ADElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ADElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[center_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 2579 # mesh dependent, at (0.0041, 0.0744)
[]
[center_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 2579 # mesh dependent, at (0.0041, 0.0744)
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
# [VectorPostprocessors]
# [clad]
# type = NodalValueSampler
# variable = disp_x
# boundary = 2
# sort_by = y
# outputs = 'outfile_clad_radial_displacement'
# []
# [pellet]
# type = NodalValueSampler
# variable = disp_x
# boundary = 10
# sort_by = y
# outputs = 'outfile_fuel_radial_displacement'
# []
# []
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
# [outfile_clad_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
# [outfile_fuel_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
[]
[PerformanceMetricOutputs]
[]
(assessment/LWR/validation/Separate_effects_FGB/analysis/Baker_TEM/Baker_TEM_Base.i)
# This input file is a partial input file that needs to be included in complementary input files.
# It contains base information/features that are shared between several assessment cases.
# This input file is therefore not designed to run on its own.
fission_rate = 1.e19 # fission/m^3/s
grain_radius_constant = 5.e-6 # m
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = ${initial_temperature}
[]
[Fiss_func]
type = ParsedFunction
expression = ${fission_rate}
[]
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = ${initial_temperature}
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
[]
[grain_radius]
initial_condition = ${grain_radius_constant}
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[pelletid]
type = PelletIdAux
variable = pellet_id
a_lower = 0
a_upper = 0.01
number_pellets = 1
execute_on = initial
[]
[grain_radius]
type = GrainRadiusAux
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = temperature
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[UO2]
type = HeatConductionMaterial
block = 0
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = UO2Sifgrs
block = 0
temperature = temperature
fission_rate = fission_rate
gbs_model = true
grain_radius = grain_radius
ig_bubble_model = NUCLEATION_RESOLUTION
res_param_option = HETEROGENEOUS_WHITE
diff_coeff_option = TURNBULL_D1_4D2_D3
initial_porosity = 0.0
output_properties = 'bubble_concentration_intra bubble_radius_intra gas_concentration_bubble_intra'
outputs = all
[]
[]
[UserObjects]
[pbz]
type = PelletBrittleZone
pellet_id = pellet_id
temperature = temperature
a_lower = 0
a_upper = 0.01
pellet_radius = 0.01
number_pellets = 1
execute_on = 'initial linear'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-8
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 1000
dt = 19800.
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 0
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 0
[]
[bubble_density]
type = ElementAverageValue
block = 0
variable = bubble_concentration_intra
execute_on = TIMESTEP_END
[]
[bubble_radius]
type = ElementAverageValue
block = 0
variable = bubble_radius_intra
execute_on = TIMESTEP_END
[]
[]
[Outputs]
perf_graph = true
csv = true
file_base = '${experiment_name}_out'
[]
(test/tests/sifgrs/uo2/ad_grain_growth.i)
# This test aims at demonstrating the coupling of the Sifgrs fission gas behavior
# model with the grain growth model (GrainRadiusAux). As the grains grow, the
# moving grain boundaries act as filters and contribute to the collection of gas
# at the grain boundaries (grain boundary sweeping). This effect is taken into
# account in the Sifgrs model by adding a supplementary fractional release term
# from within grains to grain boundaries that is equal to the volume fraction of
# the fuel swept by the moving boundaries. For this purpose, Sifgrs is coupled
# with the grain growth model and incorporates a specific grain boundary sweeping
# capability that can be activated by specifying gbs_model = true in the
# fission_gas_release block (see below).
# For the purpose of this test, fission gas swelling is not calculated.
# The gas that reaches the grain boundaries is forced to be instantaneously
# released to the plenum by skipping the grain boundary model
# (skip_bdr_model = true). Starting from an initial value of 5 microns, the grain
# radius increases due to grain growth following the temperature increase.
# At the end of the simulation the grain radius reaches the value of 17.464 microns.
# The results of the test show that gas release due to grain boundary sweeping occurs
# after grain growth commences.
# This is the AD version of the test
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 1
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0. 1.e+08'
y = '1000. 1700. '
[]
[fission_rate_function]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[temperature]
initial_condition = 1000
[]
[]
[AuxVariables]
[fission_rate]
[]
[grain_radius]
initial_condition = 5.e-06
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
thermal_conductivity = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = fission_rate_function
execute_on = 'initial timestep_begin'
[]
[grain_radius]
type = GrainRadiusAux
variable = grain_radius
temperature = temperature
execute_on = 'initial linear'
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_function
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = ADUO2Sifgrs
temperature = temperature
fission_rate = fission_rate
skip_bdr_model = true
grain_radius = grain_radius
gbs_model = true
output_properties = 'gas_concentration_generated_total gas_concentration_intra_total gas_concentration_swept_GB gas_concentration_GB_bubble_volume gas_concentration_release_total'
outputs = 'all'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1.e-10
nl_rel_tol = 1.e-14
start_time = 0.
num_steps = 500
dt = 1.e06
end_time = 1e8
[]
[Postprocessors]
[average_grain_radius]
type = ElementAverageValue
variable = grain_radius
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[intrag_swelling]
type = ADElementIntegralMaterialProperty
mat_prop = deltav_v0_intra_total
[]
[gas_amount_bubble_intra]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_bubble_intra
[]
[gas_amount_matrix_intra]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_matrix_intra
[]
[bubble_amount_intra]
type = ADElementIntegralMaterialProperty
mat_prop = bubble_concentration_intra
[]
[bubble_radius_intra_average]
type = ADElementAverageMaterialProperty
mat_prop = bubble_radius_intra
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
[]
[]
[Outputs]
csv = true
[]
(examples/3D_rodlet_3pellets/discrete_quarter_symm/3d_3pellets_mortar.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} #95% TD (TD = 10980)
displacements = 'disp_x disp_y disp_z'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
converge_on = 'disp_x disp_y disp_z temp'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = DiscreteThreePellets3D_90deg_HEX8.e
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 20
patch_update_strategy = iteration
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fission_rate]
block = 3
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = 3
initial_condition = 5e-6
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[hoop_inelastic_strain]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 25e3 # 25 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_strain fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
temperature = temp
[]
[clad]
block = 1
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
temperature = temp
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 2.49e-3
a_upper = 2.621e-2
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 3
value = 5.3548e+14
fission_rate_function = power_history
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = 3
variable = gas_swell
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[hoop_inelastic_strain]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = hoop_inelastic_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = mortar
model = coulomb
c_normal = 1e+18
c_tangential = 1e+18
friction_coefficient = 0.5
#normalize_c = true
#correct_edge_dropping = true
#normal_lm_scaling = 1.0e-5
#tangential_lm_scaling = 1.0e-5
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
gas_released = fis_gas_released_model
initial_moles = initial_moles
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_x_wedge]
type = DirichletBC
variable = disp_x
boundary = 98
value = 0.0
[]
[no_z_wedge]
type = DirichletBC
variable = disp_z
boundary = 99
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0.0
material_input = fis_gas_released_model
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.00836
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =50.0e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.02
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
temperature = temp
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
# thermal_expansion_coeff = 10.0e-6 (reference)
# We are artificially increasing the fuel expansion to simulate mechanical contact within reasonable 'example' time
thermal_expansion_coeff = 70.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_strain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
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 = 1
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-6 NONZERO 1e-13'
line_search = 'basic'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-6
nl_abs_tol = 1e-9
start_time = -200
dtmax = 1.0e6
dtmin = 1.0
end_time = 25200
# Use time below for realistic fuel thermal expansion
# end_time = 4.0e7
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
optimal_iterations = 15
iteration_window = 3
growth_factor = 2.0
cutback_factor = 0.5
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
scale_factor = 4.0 # Quarter-Symmetry Model Correction
execute_on = 'INITIAL TIMESTEP_END'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
scale_factor = 4.0 # Quarter-Symmetry Model Correction
execute_on = 'INITIAL TIMESTEP_END'
[]
[gas_volume]
type = InternalVolume
boundary = 9
scale_factor = 4.0 # Quarter-Symmetry Model Correction
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced_model]
type = ElementIntegralFisGasGeneratedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = fis_gas_produced_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[fis_gas_released_model]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fission_gas_released] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = fis_gas_released_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
execute_on = 'initial timestep_end'
[]
[flux_from_clad_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_clad] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = flux_from_clad_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[flux_from_fuel_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = flux_from_fuel_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = 3
variable = fission_rate
execute_on = 'initial timestep_end'
[]
[rod_total_power_model]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
execute_on = 'initial timestep_end'
[]
[rod_total_power] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = rod_total_power_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.03
execute_on = 'initial timestep_end'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'fission_gas_released plenum_pressure interior_temp gas_volume'
[]
[]
(test/tests/triso_failure/ad_triso_1d_weibull_probability.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
use_automatic_differentiation = true
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_source]
type = ADNeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = ADBurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
use_automatic_differentiation = true
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[freesurf_temperature]
type = ADDirichletBC
variable = temperature
boundary = exterior
value = 1346.0
[]
[exterior_pressure_x]
type = ADPressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure]
# apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
use_automatic_differentiation = true
[]
[]
[]
[Materials]
[flux]
type = ADFastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = ADUO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ADComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = ADPyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'buffer IPyC OPyC'
[]
[PyC_eigenstrain]
type = ADPyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = ADUO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = ADStrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_thermal]
type = ADHeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = ADStrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_thermal]
type = ADHeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = ADStrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_thermal]
type = ADHeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = ADStrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength]
type = ADGenericConstantMaterial
prop_values = '1000 1000 1000'
prop_names = 'characteristic_strength_SiC characteristic_strength_IPyC characteristic_strength_OPyC'
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-6
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ADElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temperature]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temperature]
type = TimeIntegratedPostprocessor
value = avg_surface_temperature
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temperature
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[Weibull_failure_probability_OPyC]
type = ADWeibullFailureProbability
block = OPyC
weibull_modulus = 6
characteristic_strength = characteristic_strength_OPyC
[]
[Weibull_failure_probability_IPyC]
type = ADWeibullFailureProbability
block = IPyC
weibull_modulus = 6
characteristic_strength = characteristic_strength_IPyC
[]
[Weibull_failure_probability_SiC]
type = ADWeibullFailureProbability
block = SiC
weibull_modulus = 6
characteristic_strength = characteristic_strength_SiC
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
perf_graph = true
[]
(assessment/LWR/validation/IFA_681/analysis/rod2/IFA_681_rod2.i)
# Halden test IFA-681, rod 2
initial_fuel_density = 10533
[GlobalParams]
density = ${initial_fuel_density}. # 96.1% 10960
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.28451e-11 # J/fission
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = 'mesh_ifa681r2_093_quad4.e'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.
[]
[]
[Functions]
[average_lhr]
type = PiecewiseLinear
data_file = 'alhr_history_ifa681r2.csv'
scale_factor = 1.e+03
format = columns
[]
[axial_scaling_lhr]
type = PiecewiseBilinear
data_file = 'peakfact_lhr_ifa681r2.csv'
axis = 1
[]
[coolant_inlet_temp]
type = PiecewiseLinear
data_file = 'coolant_inlet_temp_ifa681r2.csv'
format = columns
[]
[fast_flux]
type = PiecewiseLinear
data_file = 'fast_nflux_ifa681r2.csv'
scale_factor = 1.e+17
format = columns
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200. 0.'
y = ' 0. 1.'
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
initial_condition = 5.69e-06
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[sat_coverage]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_3 pellet_type_4'
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 'clad'
function = fast_flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = 'clad'
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_3 pellet_type_4'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fuel_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[oxi_thickness]
type = MaterialRealAux
variable = oxide_thickness
property = oxide_scale_thickness
boundary = 2
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
[]
[stcvrg]
type = MaterialRealAux
variable = sat_coverage
property = sat_coverage
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel_pellets]
add_variables = false
block = 'pellet_type_3 pellet_type_4'
strain = FINITE
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress strain_zz'
eigenstrain_names = 'fuel_volumetric_swelling_eigenstrain fuel_thermal_eigenstrain fuel_relocation_eigenstrain'
extra_vector_tags = 'ref'
[]
[clad]
add_variables = false
block = 'clad'
strain = FINITE
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_xx creep_strain_zz'
eigenstrain_names = 'clad_irradiation_growth_eigenstrain clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[uo2nat]
add_variables = false
block = 'pellet_type_2 pellet_type_5'
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
eigenstrain_names = 'uo2nat_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[al2o3]
add_variables = false
block = 'pellet_type_1 pellet_type_6'
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
eigenstrain_names = 'al2o3_thermal_eigenstrain'
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
block = 'pellet_type_3 pellet_type_4'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_3 pellet_type_4'
rod_ave_lin_pow = average_lhr
axial_power_profile = axial_scaling_lhr
num_radial = 40
bias = 0.95
num_axial = 20
a_lower = 120.3e-03
a_upper = 520.5e-03
fuel_inner_radius = 0.
fuel_outer_radius = 4.095e-03
fuel_volume_ratio = 1.
isotopes = 'Gd155 Gd157 U235 U238'
isotope_fractions = '0.01 0.01 0.0313 0.94861'
N155 = N155
N157 = N157
N235 = N235
N236 = N236
N238 = N238
N239 = N239
N240 = N240
N241 = N241
N242 = N242
RPF = RPF
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1.0e+7
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
thermal_accommodation_model = TOPTAN
gas_thermal_conductivity_model = ADVANCED
kennard_coefficient = 0.2173
jump_distance_model = TOPTAN
roughness_primary = 1.0e-6
roughness_secondary = 2.0e-6
gap_conductance_model = TOPTAN
quadrature = true
normal_smoothing_distance = 0.1
[]
[pellet_to_pellet1]
type = GapHeatTransfer
variable = temp
primary = 21
secondary = 22
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet2]
type = GapHeatTransfer
variable = temp
primary = 23
secondary = 24
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet3]
type = GapHeatTransfer
variable = temp
primary = 25
secondary = 26
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet4]
type = GapHeatTransfer
variable = temp
primary = 27
secondary = 28
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[pellet_to_pellet5]
type = GapHeatTransfer
variable = temp
primary = 29
secondary = 30
gap_geometry_type = PLATE
gap_conductivity = 0.15
quadrature = true
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[CoolantChannel]
# Halden HBWR under natural circulation (v=0.4m/s)
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_inlet_temp
inlet_pressure = 3.5e+06 # Pa
inlet_massflux = 360. # kg/m^2-s
flow_area = 0.000195
heated_diameter = 0.0261
heated_perimeter = 0.0298
hydraulic_diameter = 0.0261
htc_correlation_type = 2 # Jens-Lottes (recommended for Halden HBWR)
compute_enthalpy = true
linear_heat_rate = average_lhr
axial_power_profile = axial_scaling_lhr
oxide_thickness = oxide_thickness
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.5e+06
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.e+06
startup_time = 0.
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
## fuel ##
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_3 pellet_type_4'
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_3 pellet_type_4'
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_3 pellet_type_4'
temperature = temp
thermal_expansion_coeff = 10.0e-06
stress_free_temperature = 295.0
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
burnup_function = burnup
temperature = temp
gas_swelling_model_type = SIFGRS
block = 'pellet_type_3 pellet_type_4'
initial_fuel_density = 10533. # 96.1% 10960
initial_porosity = 0.039
total_densification = 0.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_3 pellet_type_4'
burnup_function = burnup
diameter = 8.19e-03
rod_ave_lin_pow = average_lhr
axial_power_profile = axial_scaling_lhr
diametral_gap =170.e-06
burnup_relocation_stop = 1e20
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fission_gas_release_and_swelling]
type = UO2Sifgrs
block = 'pellet_type_3 pellet_type_4'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
initial_porosity = 0.039
diff_coeff_option = TURNBULL_D1_D2
transient_option = NO_TRANSIENT
rod_ave_lin_pow = average_lhr
axial_power_profile = axial_scaling_lhr
[]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_3 pellet_type_4'
temperature = temp
burnup_function = burnup
thermal_conductivity_model = TOPTAN
Gd_content = 0.02
initial_porosity = 0.039
[]
[fuel_density]
type = StrainAdjustedDensity
block = 'pellet_type_3 pellet_type_4'
strain_free_density = ${initial_fuel_density}
[]
## uo2nat ##
[uo2nat_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_2 pellet_type_5'
youngs_modulus = 2.0e+11
poissons_ratio = 0.345
[]
[uo2nat_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_2 pellet_type_5'
[]
[uo2nat_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_2 pellet_type_5'
temperature = temp
thermal_expansion_coeff = 10.e-06
stress_free_temperature = 295.0
eigenstrain_name = 'uo2nat_thermal_eigenstrain'
[]
[uo2nat_thermal]
type = HeatConductionMaterial
block = 'pellet_type_2 pellet_type_5'
thermal_conductivity = 3.
specific_heat = 300.
[]
[uo2nat_density]
type = StrainAdjustedDensity
block = 'pellet_type_2 pellet_type_5'
strain_free_density = ${initial_fuel_density}
[]
## al2o3 ##
[al2o3_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_1 pellet_type_6'
youngs_modulus = 3.0e+11
poissons_ratio = 0.21
[]
[al2o3_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_6'
[]
[al2o3_thermal_eigenstrain]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1 pellet_type_6'
temperature = temp
thermal_expansion_coeff = 8.1e-06
stress_free_temperature = 295.0
eigenstrain_name = 'al2o3_thermal_eigenstrain'
[]
[al2o3_thermal]
type = HeatConductionMaterial
block = 'pellet_type_1 pellet_type_6'
thermal_conductivity = 18.
specific_heat = 880.
[]
[al2o3_density]
type = StrainAdjustedDensity
block = 'pellet_type_1 pellet_type_6'
strain_free_density = 3800.
[]
## clad ##
[clad_elasticity]
type = ZryElasticityTensor
block = 'clad'
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 'clad'
tangent_operator = elastic
inelastic_models = 'clad_creep'
[]
[clad_creep]
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
temperature = temp
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 'clad'
stress_free_temperature = 295
temperature = temp
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_growth_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 'clad'
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temp
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
use_coolant_channel = true
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
min_value = 295
max_value = 3000
[]
[limitX]
type = MaxIncrement
max_increment = 1.e-05
variable = disp_x
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = ' lu superlu_dist 100'
l_tol = 1.e-02 # <--- l_tol is ignored when EW is used.
line_search = 'none'
l_max_its = 200
nl_max_its = 30
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-10
start_time = -100.0
n_startup_steps = 1
end_time = 223062317
dtmax = 1.0e+06
dtmin = 0.01
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e+02
optimal_iterations = 25
iteration_window = 5
timestep_limiting_function = average_lhr
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = average_lhr
[]
[gas_volume]
type = InternalVolume
boundary = 9
[]
[fuel_volume]
type = InternalVolume
boundary = 8
outputs = exodus
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = 'pellet_type_3 pellet_type_4'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 'pellet_type_3 pellet_type_4'
[]
[avg_gap_conductance]
type = SideAverageValue
boundary = 10
variable = gap_cond
[]
[TCHoleBot_temp]
type = NodalVariableValue
variable = temp
nodeid = 63 # !! Mesh dependent
[]
[TC_temp_node1]
type = NodalVariableValue
variable = temp
nodeid = 813
[]
[TC_temp_node2]
type = NodalVariableValue
variable = temp
nodeid = 805
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
[]
[max_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_3 pellet_type_4'
value_type = max
variable = temp
[]
[midplane_hoop_strain_outer]
type = ElementalVariableValue
elementid = 892 # !! Mesh dependent
variable = strain_zz
[]
[midplane_hoop_stress_outer]
type = ElementalVariableValue
elementid = 892 # !! Mesh dependent
variable = stress_zz
[]
[midplane_contact_pressure]
type = ElementalVariableValue
elementid = 189 # !! Mesh dependent
variable = contact_pressure
[]
[midplane_oxide_thickness]
type = ElementalVariableValue
elementid = 892 # !! Mesh dependent
variable = oxide_thickness
[]
[midplane_clad_outer_temp]
type = NodalVariableValue
nodeid = 1086 # !! Mesh dependent
variable = temp
[]
[midplane_clad_inner_temp]
type = NodalVariableValue
nodeid = 1088 # !! Mesh dependent
variable = temp
[]
[max_clad_outer_temp]
type = NodalExtremeValue
boundary = '1 2 3'
value_type = max
variable = temp
[]
[max_fuel_outer_temp]
type = NodalExtremeValue
boundary = 10
value_type = max
variable = temp
[]
[midplane_coolant_htc]
type = ElementalVariableValue
elementid = 892 # !! Mesh dependent
variable = coolant_htc
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 'pellet_type_3 pellet_type_4'
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
exodus = true
perf_graph = true
[console]
type = Console
max_rows = 5
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage max_fuel_temp'
execute_on = 'FINAL'
[]
[]
(examples/2D-RZ_rodlet_10pellets/2D_discrete_finiteStrain_mortar_friction/2D_discrete_finiteStrain_mortar_friction.i)
# This model is a linear element, 10 discrete fuel pellet stack (pellet_type_1) with a fine mesh.
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
family = LAGRANGE
order = FIRST
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'temperature disp_x disp_y'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
# Import mesh file
patch_update_strategy = always
patch_size = 100 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[file]
file = ../fine10_rz.e
type = FileMeshGenerator
[]
[]
[Variables]
# Define dependent variables and initial conditions
[temperature]
initial_condition = 580.0 # set initial temp to coolant inlet
[]
[disp_x]
block = 'pellet_type_1 clad'
[]
[disp_y]
block = 'pellet_type_1 clad'
[]
[]
[AuxVariables]
# Define auxilary variables
[pid]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
# Define functions to control power and boundary conditions
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ../powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = ../peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
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
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]
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
block = 'pellet_type_1 clad'
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet_type_1 # fission rate applied to the fuel (block 2) only
burnup_function = burnup
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+09
c_tangential = 1e+17
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[pidaux]
type = ProcessorIDAux
variable = pid
[]
[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 = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[BCs]
# Define boundary conditions
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temperature
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 = temperature
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
diametral_gap =160.0e-6
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 = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temperature
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 = temperature
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 = temperature
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 = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temperature
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-4 NONZERO 1e-12'
snesmf_reuse_base = false
line_search = 'basic'
l_max_its = 20
l_tol = 8e-3
nl_max_its = 60
nl_rel_tol = 1e-5
nl_abs_tol = 1e-12 # LM
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
automatic_scaling = true
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 50
iteration_window = 2
growth_factor = 2
cutback_factor = .5
[]
[]
[Postprocessors]
[contact_evolution]
type = NodalVariableValue
variable = mechanical_normal_lm
nodeid = 4533
[]
[temp_evolution]
type = NodalVariableValue
variable = temperature
nodeid = 4533
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
#[centerline_temp]
# type = SideAverageValue
# boundary = 12
# variable = temp
# execute_on = linear
#[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temperature
execute_on = 'initial linear'
[]
[ave_fuel_temp]
type = ElementAverageValue
block = pellet_type_1
variable = temperature
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[_dt] # time step
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet_type_1
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[effective_creep_strain]
type = ElementAverageValue
block = clad
variable = effective_creep_strain
[]
[effective_creep_strain_rate]
type = ElementAverageValue
block = clad
variable = creep_strain_rate
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[temperature_post]
type = NodalValueSampler
variable = temperature
boundary = '10'
sort_by = y
[]
[contact_post]
type = NodalValueSampler
variable = mechanical_normal_lm
boundary = '10'
sort_by = y
[]
[disp_x]
type = NodalValueSampler
variable = disp_x
boundary = '10'
sort_by = y
[]
[disp_y]
type = NodalValueSampler
variable = disp_y
boundary = '10'
sort_by = y
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(examples/NuclearMaterialActions/LWR/Normal/2D_discrete_finiteStrain_action/2D_discrete_finiteStrain_action_no_burnup.i)
# This model is a linear element, 10 discrete fuel pellet stack (pellet_type_1) with a fine mesh.
[GlobalParams]
# Set initial fuel density, other global parameters
density = 10431.0
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
temperature = temperature
grain_radius = grain_radius
order = FIRST #Mesh element dictate this
family = LAGRANGE
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
# Import mesh file
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = '../../../../2D-RZ_rodlet_10pellets/fine10_rz.e'
[]
[]
[Variables]
# Define dependent variables and initial conditions
[temperature]
initial_condition = 580.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
# Define auxilary variables
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
# Define functions to control power and boundary conditions
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = '../../../../2D-RZ_rodlet_10pellets/powerhistory.csv'
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = '../../../../2D-RZ_rodlet_10pellets/peakingfactors.csv'
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[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_strain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet_type_1 # fission rate applied to the fuel (block 2) only
burnup_function = burnup
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
# Define boundary conditions
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temperature_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[NuclearMaterials]
fission_operation = Normal
[UO2]
[fuel]
block = pellet_type_1
uo2_models = 'Burnup Elastic Relocation Swelling ThermalExpansion'
stress_free_temperature = 295.0
localized_initial_temperature = 580.0
burnup_relocation_stop = 0.03
# Explicit use of burnup parameters without FuelPinGeometry
a_lower = 0.00324 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
num_axial = 11
num_radial = 80
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
fuel_outer_radius = 0.0041
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
isotopes = 'U235 U238'
isotope_fractions = '0.05 0.95'
[]
[]
[ZirconiumAlloy]
[clad]
block = clad
cladding_models = 'Elastic Creep ThermalExpansion IrradiationGrowth'
stress_free_temperature = 295.0
localized_initial_temperature = 580.0
[]
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = THIRD
side_order = FIFTH
[]
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[ave_temperature_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temperature] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temperature
execute_on = 'initial linear'
[]
[ave_fuel_temperature]
type = ElementAverageValue
block = pellet_type_1
variable = temperature
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[_dt] # time step
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[mid_penetration]
type = NodalVariableValue
nodeid = 3781 #!!Mesh dependent!!
variable = penetration
[]
[central_fuel_temperature]
type = NodalVariableValue
variable = temperature
nodeid = 3781 # !! Mesh dependent
[]
[max_fuel_temperature]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temperature
[]
[max_clad_temperature]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet_type_1
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[effective_creep_strain]
type = ElementAverageValue
block = clad
variable = effective_creep_strain
[]
[effective_creep_strain_rate]
type = ElementAverageValue
block = clad
variable = creep_strain_rate
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/Separate_effects_FGB/analysis/White_AGR_SEM/White_AGR_SEM_Base.i)
# This input file is a partial input file that needs to be included in complementary input files.
# It contains base information/features that are shared between several assessment cases.
# This input file is therefore not designed to run on its own.
initial_temperature = 573.0 # K
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
data_file = ${temperature_history_data_file}
format = columns
[]
[Fiss_func]
type = PiecewiseLinear
data_file = ${fission_rate_data_file}
format = columns
[]
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = ${initial_temperature}
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[burnup]
order = FIRST
family = LAGRANGE
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
[]
[grain_radius]
initial_condition = ${grain_radius_const}
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[burnup]
type = ConstantAux
variable = burnup
value = ${initial_burnup}
[]
[pelletid]
type = PelletIdAux
variable = pellet_id
a_lower = 0
a_upper = 0.01
number_pellets = 1
execute_on = initial
[]
[grain_radius]
type = GrainRadiusAux
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[]
[BCs]
[bottom_temperature]
type = FunctionDirichletBC
variable = temperature
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[UO2]
type = HeatConductionMaterial
block = 0
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = UO2Sifgrs
block = 0
gbs_model = true
grain_radius = grain_radius
temperature = temperature
fission_rate = fission_rate
ig_bubble_model = NUCLEATION_RESOLUTION
ig_bubble_coarsening = WITH_COARSENING
ig_fully_coupled = LOOSELY_COUPLED
ig_diff_algorithm = polypole2
diff_coeff_option = TURNBULL_D1_4D2_D3
transient_option = MICROCRACKING_BURNUP
pellet_brittle_zone = pbz
pellet_id = pellet_id
initial_burnup = ${initial_burnup}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-8
nl_rel_tol = 1e-5
start_time = 0.0
end_time = ${end_time}
[TimeStepper]
type = IterationAdaptiveDT
dt = 8000.
optimal_iterations = 10
iteration_window = 4
growth_factor = 2.0
linear_iteration_ratio = 100
force_step_every_function_point = true
timestep_limiting_function = Temp_func
[]
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 0
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 0
[]
[intra_swelling_total]
type = ElementIntegralMaterialProperty
block = 0
mat_prop = deltav_v0_intra_total
[]
[inter_swelling_total]
type = ElementIntegralMaterialProperty
block = 0
mat_prop = deltav_v0_bubble_GB
[]
[gas_amount_bubble_intra_non_restructured]
type = ElementIntegralMaterialProperty
block = 0
mat_prop = gas_concentration_bubble_intra_non_restructured
[]
[gas_amount_matrix_intra_non_restructured]
type = ElementIntegralMaterialProperty
block = 0
mat_prop = gas_concentration_matrix_intra_non_restructured
[]
[bubble_amount_intra_non_restructured]
type = ElementIntegralMaterialProperty
block = 0
mat_prop = bubble_concentration_intra_non_restructured
[]
[bubble_radius_intra_average_non_restructured]
type = ElementAverageMaterialProperty
block = 0
mat_prop = bubble_radius_intra_non_restructured
[]
[bubble_pressure_intra_non_restructured]
type = ElementAverageMaterialProperty
block = 0
mat_prop = bubble_pressure_intra_non_restructured
[]
[gas_amount_GB_bubbles_non_restructured]
type = ElementIntegralMaterialProperty
block = 0
mat_prop = gas_concentration_GB_bubble_volume_non_restructured
[]
[bubble_amount_GB_non_restructured]
type = ElementIntegralMaterialProperty
block = 0
mat_prop = bubble_GB_volume_density_non_restructured
[]
[bubble_radius_GB_average_non_restructured]
type = ElementAverageMaterialProperty
block = 0
mat_prop = bubble_radius_GB_non_restructured
[]
[bubble_pressure_GB_non_restructured]
type = ElementAverageMaterialProperty
block = 0
mat_prop = bubble_GB_pressure_non_restructured
[]
[volume_fuel]
type = ElementIntegralMaterialProperty
block = 0
mat_prop = 1
[]
[grain_radius_total]
type = ElementAverageMaterialProperty
block = 0
mat_prop = grain_radius_sifgrs
[]
[]
[UserObjects]
[pbz]
type = PelletBrittleZone
pellet_id = pellet_id
temperature = temperature
a_lower = 0
a_upper = 0.01
pellet_radius = 0.01
number_pellets = 1
execute_on = 'initial linear'
[]
[]
[Outputs]
perf_graph = true
csv = true
file_base = '${id}_out'
[]
(examples/3D_rodlet_3pellets/discrete_quarter_symm/3d_3pellets.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} #95% TD (TD = 10980)
displacements = 'disp_x disp_y disp_z'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y disp_z'
[]
[Mesh]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 20
patch_update_strategy = iteration
[mesh]
type = FileMeshGenerator
file = DiscreteThreePellets3D_90deg.e
[]
[]
[Variables]
[temp]
initial_condition = 580.0
[]
[]
[AuxVariables]
[fission_rate]
block = 3
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = 3
initial_condition = 5e-6
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[hoop_inelastic_strain]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 25e3 # 25 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_strain fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 2.49e-3
a_upper = 2.621e-2
fuel_inner_radius = 0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 3
value = 5.3548e+14
fission_rate_function = power_history
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = 3
variable = gas_swell
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[hoop_inelastic_strain]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = hoop_inelastic_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
penalty = 1e14
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = fis_gas_released_model
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_x_wedge]
type = DirichletBC
variable = disp_x
boundary = 98
value = 0.0
[]
[no_z_wedge]
type = DirichletBC
variable = disp_z
boundary = 99
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0.0
material_input = fis_gas_released_model
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.00836
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =50.0e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.02
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup_function = burnup
temperature = temp
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_strain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
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 = 1
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
start_time = -200
dtmax = 1.0e6
dtmin = 1.0
end_time = 3.0e7
automatic_scaling = true
compute_scaling_once = true
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
optimal_iterations = 15
iteration_window = 3
growth_factor = 2.0
cutback_factor = 0.5
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
scale_factor = 4.0 # Quarter-Symmetry Model Correction
execute_on = 'INITIAL TIMESTEP_END'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
scale_factor = 4.0 # Quarter-Symmetry Model Correction
execute_on = 'INITIAL TIMESTEP_END'
[]
[gas_volume]
type = InternalVolume
boundary = 9
scale_factor = 4.0 # Quarter-Symmetry Model Correction
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced_model]
type = ElementIntegralFisGasGeneratedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = fis_gas_produced_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[fis_gas_released_model]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
execute_on = 'initial timestep_end'
[]
[fission_gas_released] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = fis_gas_released_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
execute_on = 'initial timestep_end'
[]
[flux_from_clad_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_clad] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = flux_from_clad_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[flux_from_fuel_model]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = flux_from_fuel_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = 3
variable = fission_rate
execute_on = 'initial timestep_end'
[]
[rod_total_power_model]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
execute_on = 'initial timestep_end'
[]
[rod_total_power] # Scaled PostProcessor for Quarter-Symmetry Model
type = ScalePostprocessor
value = rod_total_power_model
scaling_factor = 4.0
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.03
execute_on = 'initial timestep_end'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'plenum_pressure interior_temp gas_volume'
[]
[]
(test/tests/sifgrs/u3si2/intergranular.i)
# This test verifies the overall U3Si2 fgb model through a single element calculation.
# The outcome has been benchmarked against the result of a stand-alone, independent software.
# In this input file, the coupled fgr and gaseous swelling calculation is performed.
initial_fuel_density = 11590.0
[GlobalParams]
density = ${initial_fuel_density}
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1250'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.e19'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[T]
initial_condition = 1250.0
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[burnup]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_intra_total]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_bubble_GB]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
temperature = T
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[burnup]
type = BurnupAux
variable = burnup
fission_rate = fission_rate
[]
[bbl_cnc]
type = MaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
[]
[rad_bbl]
type = MaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
[]
[gascnc_bbl]
type = MaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
[]
[dvv0gr]
type = MaterialRealAux
variable = deltav_v0_intra_total
property = deltav_v0_intra_total
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bubble_GB
property = deltav_v0_bubble_GB
[]
[]
[BCs]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[]
[left_x]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[]
[back_z]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[U3Si2]
type = GenericConstantMaterial
block = 0
prop_names = "thermal_conductivity specific_heat"
prop_values = '1 1'
[]
[fission_gas_behavior]
type = U3Si2Sifgrs
block = 0
temperature = T
fission_rate = fission_rate
grain_radius_const = 28.e-06
[]
[swelling]
type = U3Si2VolumetricSwellingEigenstrain
block = 0
gaseous_swelling_type = U3SI2FG
temperature = T
burnup = burnup
complete_burnup = 10
eigenstrain_name = fuel_volumetric_strain
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.0e11
poissons_ratio = 0.17
block = 0
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 0
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 0
temperature = T
stress_free_temperature = 1250.0
thermal_expansion_coeff = 1.5e-5
eigenstrain_name = fuel_thermal_strain
[]
[density]
type = StrainAdjustedDensity
block = 0
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-7
nl_rel_tol = 1e-7
start_time = 0.
dt = 1e5
num_steps = 100
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 0
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 0
[]
[gbswelling]
type = ElementAverageValue
variable = deltav_v0_bubble_GB
block = 0
[]
[igswelling]
type = ElementAverageValue
variable = deltav_v0_intra_total
block = 0
[]
[]
[Outputs]
exodus = true
[]
(test/tests/ifba_he_production/doc/fill_gas_helium.i)
#
# 2-D RZ One Pellet Test - Using Helium as fill gas
#
# This test is of a single pellet with cladding and a specified initial
# pressure of He fill gas.
#
# This model results in a lower limit for the interior_temp due to the type of
# fill gas used.
#
[GlobalParams]
density = 10431.0 #95% TD (TD = 10980)
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 4
nx_p = 6
nx_c = 3
ny_cu = 3
ny_c = 4
ny_cl = 3
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
displacements = 'disp_x disp_y'
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = '3'
initial_condition = 5e-6 # must be the same as the initial value in Sifgr
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = '3'
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
# CoolantChannel requires this to have units while axial_peaking_factors must be normalized.
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 20e3 # 20 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[q] # this is for fuel_relocation
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[]
[SolidMechanics]
[solid]
temperature = temp
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_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
#convert W/m from power profile to fission/m**3-s
#calculated as 1/(energy_per_fission*area)
#using energy_per_fission = 3.2e-11, consistent with 200 MeV/fission
value = 5.3548e+14
fission_rate_function = q
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
# If you divide flux/power, you get this constant factor
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = '3'
variable = gas_swell
property = deltav_v0_bd
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = fis_gas_released
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
# pin entire clad bottom in y
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
# pin fuel bottom in y
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
# pin fuel axis in x and z
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
startup_time = 0.0
material_input = fis_gas_released
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
displacements = 'disp_x disp_y'
extra_vector_tags = 'ref'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_swelling]
type = VSwellingUO2
block = '3'
temperature = temp
burnup = burnup
gas_swelling_type = sifgrs
[]
[fuel_solid_mechanics_elastic]
type = Elastic
block = '3'
temperature = temp
youngs_modulus = 2.e11
poissons_ratio = 0.345
thermal_expansion = 10.0e-6
dep_matl_props = deltav_v0_bd
[]
[fission_gas_release]
type = Sifgrs
block = '3'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_solid_mechanics]
type = SolidModel
block = 1
temperature = temp
youngs_modulus = 7.5e10
poissons_ratio = 0.3
thermal_expansion = 5.0e-6
constitutive_model = clad_plasticity
[]
[clad_growth]
type = IrradiationGrowthZr4
block = 1
fast_neutron_fluence = fast_neutron_fluence
growth_direction = 1
[]
[clad_plasticity]
type = IsotropicPlasticity
block = 1
temperature = temp
yield_stress = 550e6
hardening_constant = 2.5e9
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 25.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x'
off_diag_column = 'disp_x'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 5.3e7 # 1.7 years (~3% burnup)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e5 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01 # change: length of fuel stack in meters (1 pellet height)
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[out]
type = CSV
delimiter = ' '
[]
[]
(assessment/LWR/validation/IFA_677/analysis/IFA_677_Base.i)
# This is a partial input file that contains characteristics common to the entire assessment case
# NOTE: This file is not meant to be run on its own as it requires information contained in the .params files
# Fuel material properties
total_densification = 0.09e-2 # (-)
oxygen_to_metal_ratio = 2.002 # (-)
# Cladding material properties
cladding_density = 6550.0 # kg/m^3
# Cladding geometry
clad_inner_radius = 4.65e-3 # m
clad_outer_radius = 5.375e-3 # m
# Rod geometry
a_lower = 0.001025 # m
fuel_inner_radius = 0.0 # m
fuel_outer_radius = 0.4565e-02 # m
fuel_volume_ratio = 0.9940 # (-)
fuel_diameter = 9.13e-3 # m
diametral_gap = 170.e-6 # m
# Neutronics, power, and isotope fractions
energy_per_fission = 3.28451e-11 # J/fission
isotope_fraction_Pu239 = 0.0
isotope_fraction_Pu240 = 0.0
isotope_fraction_Pu241 = 0.0
isotope_fraction_Pu242 = 0.0
# Temperature conditions
initial_temperature = 293.0 # K
stress_free_temperature = 293.0 # K
# Coolant pressure ramp parameters
pressure_ramp_x = '-200 0'
pressure_ramp_y = '0.0298 1'
pressure_ramp_factor = 3.4e6 # (-)
# Coolant Channel parameters
inlet_pressure = 3.4e+06 # Pa
inlet_massflux = 450. # kg/m^2-s
rod_diameter = 10.75e-03 # m
rod_pitch = 46.e-03 # m
htc_correlation_type = 2
# Contact
contact_penalty = 1e14 # (-)
roughness_primary = 5.0e-6
roughness_secondary = 0.32e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1 # m
# Relocation
relocation_activation1 = 5000 # W/m
# Plenum parameters
initial_plenum_pressure = 1.35e6 # Pa
startup_time = 0 # s
# Physical constants
gravitational_acceleration_constant = -9.81 # m/s^2
ideal_gas_constant = 8.3143 # J/mol-K
# Numerical options
l_max_its = 50
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
start_time = -200 # s
n_startup_steps = 1
dtmax = 5e5 # s
dtmin = 0.1 # s
TimeStepper_dt = 2e2 # s
TimeStepper_max_function_change = 1e20
# Postprocessor parameters
burnup_scaling_factor = 950.0 # (-)
time_days_scale_factor = 1.157407407e-5 # (-)
midplane_oxide_thickness_elementid = 629
outer_midplane_clad_temperature_nodeid = 763
fuel_central_temperature_nodeid = 337
clad_elongation_nodeid = 826
fuel_elongation_nodeid = 504
upper_TC_temperature_nodeid = 633
lower_TC_temperature_nodeid = 31
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temperature
order = FIRST
family = LAGRANGE
density = ${initial_fuel_density}
initial_porosity = ${initial_fuel_porosity}
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
patch_update_strategy = auto
patch_size = 10
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ${rod_mesh_file}
[]
[]
[Variables]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[AuxVariables]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
initial_condition = ${initial_grain_radius}
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = ${power_history_data_file}
scale_factor = 1e3
format = columns
[]
[corrected_power_history]
type = ParsedFunction
symbol_names = 'rod_average_burnup power_history'
symbol_values = 'burnup_MWdkgU power_history'
expression = 'if(rod_average_burnup < 14.5, power_history, 0.98 * power_history)'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = ${axial_peaking_data_file}
scale_factor = 1
axis = 1
[]
[power_correction]
type = PiecewiseBilinear
data_file = ${power_correction_data_file}
scale_factor = 1
axis = 1
[]
[corrected_axial_peaking_factors]
type = CompositeFunction
functions = 'axial_peaking_factors power_correction'
[]
[pressure_ramp]
type = PiecewiseLinear
x = ${pressure_ramp_x}
y = ${pressure_ramp_y}
[]
[coolant_inlet_temperature]
type = PiecewiseLinear
data_file = ${coolant_inlet_temperature_data_file}
scale_factor = 1
format = columns
[]
[fast_flux]
type = PiecewiseLinear
data_file = ${fast_neutron_flux_data_file}
scale_factor = 1e4
format = columns
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[pellets]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_eigenstrain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_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 strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = ${gravitational_acceleration_constant}
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
rod_ave_lin_pow = corrected_power_history
axial_power_profile = corrected_axial_peaking_factors
num_radial = 80
num_axial = 11
a_lower = ${a_lower}
a_upper = ${a_upper}
fuel_inner_radius = ${fuel_inner_radius}
fuel_outer_radius = ${fuel_outer_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = fast_flux
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 pellet_type_2 pellet_type_3'
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = linear
[]
[effective_creep_strain]
type = MaterialRealAux
block = 1
property = effective_creep_strain
variable = effective_creep_strain
execute_on = 'timestep_end'
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
model = frictionless
normalize_penalty = true
penalty = ${contact_penalty}
normal_smoothing_distance = ${normal_smoothing_distance}
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
contact_pressure = contact_pressure
quadrature = true
roughness_primary = ${roughness_primary}
roughness_secondary = ${roughness_secondary}
roughness_coef = ${roughness_coef}
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '20'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = ${pressure_ramp_factor}
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '9'
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${ideal_gas_constant}
output_initial_moles = initial_moles
temperature = plenum_temp
volume = gas_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = coolant_inlet_temperature
inlet_pressure = ${inlet_pressure}
inlet_massflux = ${inlet_massflux}
rod_diameter = ${rod_diameter}
rod_pitch = ${rod_pitch}
htc_correlation_type = ${htc_correlation_type}
compute_enthalpy = true
linear_heat_rate = corrected_power_history
axial_power_profile = corrected_axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
thermal_conductivity_model = HALDEN #NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
total_densification = ${total_densification}
initial_fuel_density = ${initial_fuel_density}
gas_swelling_model_type = SIFGRS
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
relocation_model = ESCORE_modified
burnup_function = burnup
diameter = ${fuel_diameter}
diametral_gap = ${diametral_gap}
rod_ave_lin_pow = corrected_power_history
axial_power_profile = corrected_axial_peaking_factors
relocation_activation1 = ${relocation_activation1}
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
rod_ave_lin_pow = corrected_power_history
fragmentation_model = BARANI
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'fuel_creep'
tangent_operator = elastic
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fuel_creep]
type = UO2CreepUpdate
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = ${initial_grain_radius}
oxygen_to_metal_ratio = ${oxygen_to_metal_ratio}
[]
[fuel_density]
type = StrainAdjustedDensity
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = ZryThermal
block = clad
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_primary_creep = true
model_thermal_creep = true
model_irradiation_creep = true
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = ${cladding_density}
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = ${clad_inner_radius}
clad_outer_radius = ${clad_outer_radius}
use_coolant_channel = true
fast_neutron_flux = fast_neutron_flux
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING_BURNUP
ig_bubble_model = NUCLEATION_RESOLUTION
diff_coeff_option = TURNBULL_D1_4D2_4D3
doping_type = CR2O3_DOPED
cr_doped_option = BEST_ESTIMATE_1773
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = MaxIncrement
max_increment = 20
variable = temperature
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = ${l_max_its}
l_tol = ${l_tol}
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
start_time = ${start_time}
n_startup_steps = ${n_startup_steps}
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
[TimeStepper]
type = IterationAdaptiveDT
dt = ${TimeStepper_dt}
timestep_limiting_function = power_history
max_function_change = ${TimeStepper_max_function_change}
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = corrected_power_history
execute_on = 'initial timestep_end'
[]
[temperature_fuel_max]
type = NodalExtremeValue
variable = temperature
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
execute_on = 'initial timestep_end'
[]
[burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[burnup_MWdkgU]
type = ScalePostprocessor
value = burnup
scaling_factor = ${burnup_scaling_factor}
[]
[time_days]
type = FunctionValuePostprocessor
function = t
scale_factor = ${time_days_scale_factor}
[]
[temperature_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[oxide_thickness_midplane]
type = ElementalVariableValue
elementid = ${midplane_oxide_thickness_elementid}
variable = oxide_thickness
execute_on = 'initial timestep_end'
[]
[strain_clad_hoop_max]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[temperature_clad_outer_midplane]
type = NodalVariableValue
nodeid = ${outer_midplane_clad_temperature_nodeid}
variable = temperature
execute_on = 'initial timestep_end'
[]
[temperature_fuel_central]
type = NodalVariableValue
variable = temperature
nodeid = ${fuel_central_temperature_nodeid}
execute_on = 'initial timestep_end'
[]
[gas_volume]
type = InternalVolume
boundary = '9'
execute_on = 'initial linear'
[]
[fission_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
execute_on = linear
[]
[fission_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
execute_on = linear
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fission_gas_produced
execute_on = linear
[]
[clad_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${clad_elongation_nodeid}
[]
[fuel_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${fuel_elongation_nodeid}
[]
[upper_TC_temperature]
type = NodalVariableValue
variable = temperature
nodeid = ${upper_TC_temperature_nodeid}
[]
[lower_TC_temperature]
type = NodalVariableValue
variable = temperature
nodeid = ${lower_TC_temperature_nodeid}
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
color = false
[console]
type = Console
max_rows = 15
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = 'lower_TC_temperature upper_TC_temperature fgr_percent plenum_pressure strain_clad_hoop_max'
execute_on = 'FINAL'
[]
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[]
(test/tests/sifgrs/uo2/ad_first_stage_restart1.i)
# This test is for evaluating the first stage (i.e., the intra-granular diffusion calculation) of the Sifgrs fission gas behavior model.
# The first stage is isolated by setting the fractional bubble coverage at grain boundary saturation to zero (saturation_coverage = 0). Under this condition (i.e. gas reaching the grain boundaries goes instantaneously to the plenum), the ratio of fission gas released to fission gas generated calculated by the model should compare very closely with the analytical expression for fractional fission gas release fraction from the grains published by Speight (Nuclear Science and Engineering 37, 180, 1969). The Speight equation for fission gas release fraction (released/produced) is
#
# parameters:
# n and no are summation integers
# a = grain radius in m
# pi = the number pi 3.14159...
# D = effective diffusion coefficient in m^2/s where D includes the effects of intragranular trapping and resolution (see White, JNM 118, 1, 1983, and the
# fgr_diffusion_coefficient_test in BISON for a description)
# t = time in seconds
#
# 6*a^2
# f = 1 - sum(n=1, to no) ---------------- * {1 - exp -[D*n^2*pi^2*t/a^2]}
# pi^4 * D*t*n^4
#
# For no = 1, D = 4.123e-19 m^2/s, a = 1e-5 m, t = 1e6 s, f = 0.596.
# For no = 50, and the same parameters defined above, f = 0.1388
#
# With the output from this test, if one calculates fission gas released / fission gas produced at
# t = 1.e+06, the result should be 0.1032, which compares well with the analytical solution from Speight.
#
# See also the sheet sifgrs_first_stage of the attached excel file (regression_tests_sifgrs.xlsx).
# Check of fission gas produced
# beta = rate of gas production per unit volume by fission
# beta * time * volume = gas produced
# The following parameters are used to calculate beta
#
# t = time in seconds = 5e7
# Avogadros number = 6.023e23 atoms/mol
# FY = fractional yield = fraction of fission gas atoms per fission = 0.3017 atoms/fission
# Y = yield = FY/Avogadros number = atoms/fission / atoms/mol to give mols/fission
# F = fission rate = fissions/m^3*s = 2.5e19
# beta = F*Y = fissions/m^3s * mols/fission = mols/m^3*s
# gas produced = beta * time * volume
# For this test problem, volume = (0.01m)^3 = 1e-6m^3 = volume of single finite element in this problem
#
# Y = 0.3017/6.023e23 = 5.0091e-25 mol/fission
# beta = 2.5e19*5.009e-25 = 1.25e-5 mol/m^3s
# gas produced = 1.25e-5*5e7*1e-6 = 6.26e-4 mols
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[FRA]
type = ADMaterialRealAux
variable = fract_FGR_analytical
property = fract_FGR_analytical
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 1
saturation_coverage = 0
temperature = T
fission_rate = fission_rate
testing_output = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 28 #50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 1
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 1
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
[out]
type = Exodus
[]
[console]
type = Console
execute_on = 'initial failed linear nonlinear timestep_end'
[]
[checkpoint]
type = Checkpoint
num_files = 1
[]
[]
[Problem]
[]
(test/tests/triso_failure/triso_1d_weibull_probability.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
[]
[]
[BCs]
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1346.0
[]
[exterior_pressure_x]
type = Pressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure]
# apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'buffer IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_thermal]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_thermal]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_thermal]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength]
type = GenericConstantMaterial
prop_values = '1000 1000 1000'
prop_names = 'characteristic_strength_SiC characteristic_strength_IPyC characteristic_strength_OPyC'
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temperature]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temperature]
type = TimeIntegratedPostprocessor
value = avg_surface_temperature
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temperature
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[Weibull_failure_probability_OPyC]
type = WeibullFailureProbability
block = OPyC
weibull_modulus = 6
characteristic_strength = characteristic_strength_OPyC
[]
[Weibull_failure_probability_IPyC]
type = WeibullFailureProbability
block = IPyC
weibull_modulus = 6
characteristic_strength = characteristic_strength_IPyC
[]
[Weibull_failure_probability_SiC]
type = WeibullFailureProbability
block = SiC
weibull_modulus = 6
characteristic_strength = characteristic_strength_SiC
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
perf_graph = true
[]
(assessment/MOX/JOYO/MK-I/analysis/MK-I_50MW_master_new_bubble_gb_lim.i)
initial_fuel_density = 10836.8
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.065
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.6
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000100
clad_thickness = 0.00035
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.599
elem_type = QUAD8
nx_c = 4
ny_c = 200
nx_p = 20
ny_p = 200
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = '0 70000 17153028'
y = '0 25577 25577'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 70000 17153028'
y = '0 1.2e+19 1.2e+19'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0 0.071 0.146 0.221 0.296 0.37 0.443 0.566'
y = '0 17153028'
z = '0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672 0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = '0 70000 17153028'
y = '0 21000 21000'
[]
[clad_surface_temp]
type = PiecewiseBilinear
x = '0 0.075 0.15 0.225 0.3 0.375 0.45 0.525 0.6'
y = '0 17153028'
z = '295 295 295 295 295 295 295 295 295 499.9 509.1 517.8 525.42 532.71 540.29 547.7 552.3 554.81'
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[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
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.065
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp_clad_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_surface_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 101325
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 300000
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10836.8
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
diff_coeff_option = TURNBULL_D1_4D2_4D3
fission_rate = fission_rate
grain_radius_const = 8.01e-6 #I'm keeping the grain radius const because the grain growth in MOX is probably different due to high Temp
bubble_gb_limit = 1.0e+11
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-5
fixed_point_rel_tol = 1e-5
fixed_point_max_its = 1
l_max_its = 70
l_tol = 8e-3
nl_max_its = 70
nl_rel_tol = 1e-5
nl_abs_tol = 1e-5
start_time = 0
n_startup_steps = 1
end_time = 17153028
dtmax = 1e6
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 5000
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.6 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = MK-I_50MW_sub_new_bubble_gb_lim.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'temp disp_x disp_y'
[]
(test/tests/triso_failure/ad_triso_1d_failure.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
use_automatic_differentiation = true
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_source]
type = ADNeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = ADRankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = ADBurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
use_automatic_differentiation = true
[]
[]
[BCs]
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[freesurf_temperature]
type = ADDirichletBC
variable = temperature
boundary = exterior
value = 1346.0
[]
[exterior_pressure_x]
type = ADPressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure]
# apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
use_automatic_differentiation = true
[]
[]
[]
[Materials]
[radial_stress]
type = ADRankTwoCylindricalComponent
rank_two_tensor = stress
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 0 1'
cylindrical_component = RadialStress
property_name = radial_stress
outputs = all
[]
[max_principal_stress]
type = ADRankTwoInvariant
property_name = max_principal_stress
rank_two_tensor = stress
invariant = MaxPrincipal
[]
[flux]
type = ADFastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = ADUO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ADComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = ADPyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = ADPyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = ADUO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = ADStrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_thermal]
type = ADHeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = ADStrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_thermal]
type = ADHeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = ADStrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_thermal]
type = ADHeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = ADStrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength_SiC]
type = ADGenericConstantMaterial
prop_values = '9640000'
prop_names = 'characteristic_strength'
block = SiC
[]
[characteristic_strength_PyC]
type = ADGenericConstantMaterial
prop_values = '964000'
prop_names = 'characteristic_strength'
block = 'IPyC OPyC'
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ADElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ADElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temperature]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temperature]
type = TimeIntegratedPostprocessor
value = avg_surface_temperature
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temperature
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = ADWeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
[]
[failure_indicator_SiC]
type = ADWeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_SiC
[]
[strength_IPyC]
type = ADWeibullEffectiveMeanStrength
block = IPyC
weibull_modulus = 6
[]
[failure_indicator_IPyC]
type = ADWeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_IPyC
[]
[failure_indicator_debonding]
type = ADTRISODebondingFailureIndicator
boundary = IPyC_outer_boundary
bond_strength = 1e5
stress_name = radial_stress
[]
[strength_OPyC]
type = ADWeibullEffectiveMeanStrength
block = OPyC
weibull_modulus = 6
[]
[failure_indicator_OPyC]
type = ADWeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_OPyC
[]
[failure_indicator_SiC_crackedIPyC]
type = ADWeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
[]
[failure_indicator_SiC_crackedOPyC]
type = ADWeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
[]
[triso_failure]
type = TRISOFailureEvaluation
IPyC_failure = failure_indicator_IPyC
OPyC_failure = failure_indicator_OPyC
SiC_failure = failure_indicator_SiC
SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
SiC_failure_crackedOPyC = failure_indicator_SiC_crackedOPyC
SiC_failure_debonding = failure_indicator_debonding
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
perf_graph = true
[]
(test/tests/sifgrs/uo2/ig_bubble_coarsening_disl_density_material.i)
# This is a test of passing disl_density_material into Sifgrs. Based on ig_bubble_coarsening.i.
#
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
x = '0. 6.07e7 60700250. 60700500. 60704100. 60704600.'
y = '600. 600. 1450. 2300. 2300. 600.'
[]
[Fiss_func]
type = PiecewiseLinear
x = '0. 6.07e7 60700250. 60700500. 60704100. 60704600.'
y = '1.e19 1.e19 1.e19 1.e19 1.e19 1.e19'
[]
[]
[Variables]
[T]
initial_condition = 600.
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_disl_grn]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_disl_grn]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_disl_grn]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_intra_total]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[bbl_cnc]
type = MaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
execute_on = 'TIMESTEP_END'
[]
[rad_bbl]
type = MaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
execute_on = 'TIMESTEP_END'
[]
[gascnc_bbl]
type = MaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
execute_on = 'TIMESTEP_END'
[]
[bbl_cnc_disl]
type = MaterialRealAux
variable = bbl_disl_grn
property = bubble_concentration_intra_dislocation
execute_on = 'TIMESTEP_END'
[]
[rad_bbl_disl]
type = MaterialRealAux
variable = rad_bbl_disl_grn
property = bubble_radius_intra_dislocation
execute_on = 'TIMESTEP_END'
[]
[gascnc_bbl_disl]
type = MaterialRealAux
variable = gas_bbl_disl_grn
property = gas_concentration_bubble_intra_dislocation
execute_on = 'TIMESTEP_END'
[]
[dvv0gr]
type = MaterialRealAux
variable = deltav_v0_intra_total
property = deltav_v0_intra_total
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
grain_radius_const = 5.e-6
ig_bubble_model = NUCLEATION_RESOLUTION
diff_coeff_option = TURNBULL_D1_4D2_D3
res_param_option = HETEROGENEOUS_SETYAWAN
ig_bubble_coarsening = WITH_COARSENING
ig_diff_algorithm = POLYPOLE1
dislocation_density_material = parsed_dislocation_density
nuclerate_scalef = 0.5
outputs = 'all'
output_properties = 'dislocation_coverage_fraction deltav_v0_bubble_intra_dislocation'
[]
[parsed_dislocation_density]
type = ParsedMaterial
property_name = parsed_dislocation_density
expression = '1E14'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = -100
end_time = 60704600.
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 10
iteration_window = 4
growth_factor = 2.
linear_iteration_ratio = 100
time_t = '0 6.0e+7 6.07e7 60704600'
time_dt = '1000 10000 100 1'
force_step_every_function_point = true
timestep_limiting_function = Temp_func
[]
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[radius_bubbles_at_dislocations]
type = ElementAverageValue
variable = rad_bbl_disl_grn
[]
[density_bbl_dislocations]
type = ElementAverageValue
variable = bbl_disl_grn
[]
[intrag_swelling]
type = ElementAverageValue
variable = deltav_v0_intra_total
[]
[dislocation_coverage_fraction]
type = ElementAverageValue
variable = dislocation_coverage_fraction
[]
[deltav_v0_bubble_intra_dislocation]
type = ElementAverageValue
variable = deltav_v0_bubble_intra_dislocation
[]
[]
[Outputs]
exodus = true
[]
(examples/accident_tolerant_fuel/uo2_fecral/uo2_fecral.i)
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
displacements = 'disp_x disp_y'
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = uo2_fecral_smeared.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.0
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_inner_wall = 5
clad_outer_wall = 2
clad_top = 3
clad_bottom = 1
pellet_exteriors = 8
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_hoop]
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[mass_gain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e4 1e8'
y = '0 2.5e4 2.5e4'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0 1e8'
y = '6.537e-3 1 1'
scale_factor = 15.5e6
[]
[mass_flux_func]
type = PiecewiseLinear
x = '-200 0 1e8'
y = '3800. 3800. 3800.'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
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'
temperature = temp
[]
[clad]
block = clad
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
temperature = temp
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[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
block = pellet_type_1
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[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
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = total_hoop_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[creep_strain_hoop]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = creep_strain_hoop
scalar_type = HoopStress
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
block = clad
[]
[oxide]
type = MaterialRealAux
variable = oxide_thickness
property = scale_thickness
boundary = 2
[]
[mass_gain]
type = MaterialRealAux
variable = mass_gain
property = oxide_mass_gain
boundary = 2
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
normal_smoothing_distance = 0.1
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = pressure_ramp # Pa
inlet_massflux = mass_flux_func # kg/m^2-sec
rod_diameter = 9.5e-3 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[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
[]
[elastic_stress]
type = ComputeSmearedCrackingStress
block = pellet_type_1
cracking_stress = 1.68e8
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet_type_1
burnup_function = burnup
temperature = temp
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = 'pin_geometry'
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = pellet_type_1
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_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
[]
[clad_thermal]
type = FeCrAlThermal
material = C35M
block = clad
temperature = temp
[]
[clad_elasticity_tensor] # isotropic elasticity tensor for Zry cladding
type = FeCrAlElasticityTensor
temperature = temp
fecral_material_type = C35M
block = clad
[]
[clad_stress] # stress update class to govern the return mapping algorithm for creep
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_creep clad_plasticity'
block = clad
[]
[clad_creep]
type = FeCrAlCreepUpdate
block = clad
temperature = temp
fecral_material_type = C35M
fast_neutron_flux = fast_neutron_flux
model_irradiation_creep = true
model_thermal_creep = true
max_inelastic_increment = 1e-4
[]
[thermal_expansion]
type = FeCrAlThermalExpansionEigenstrain
block = clad
temperature = temp
fecral_material_type = C35M
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = FeCrAlVolumetricSwellingEigenstrain
block = clad
temperature = temp
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_volumetric_strain
[]
[clad_plasticity]
type = FeCrAlPlasticityUpdate
block = clad
hardening_constant = 2.5e9
temperature = temp
yield_stress = 500.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7250.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[failure_criterion]
type = FeCrAlCladdingFailure
boundary = '2 5'
hoop_stress = hoop_stress
failure_criterion = UTS
temperature = temp
[]
[oxidation]
type = FeCrAlOxidation
reactor_type = PWR
boundary = 2
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
max_value = 3200.0
min_value = 293.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-5
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 1e8
dtmax = 1e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = 5e5
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2.0
timestep_limiting_postprocessor = material_timestep
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[_dt]
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[alhr_input]
type = FunctionValuePostprocessor
function = power_history
[]
[average_burnup]
type = ElementAverageValue
block = pellet_type_1
variable = burnup
[]
[oxide_thickness]
type = ElementExtremeValue
block = clad
variable = oxide_thickness
[]
[mass_gain]
type = ElementExtremeValue
block = clad
variable = mass_gain
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
csv = true
print_linear_residuals = true
color = false
[console]
type = Console
max_rows = 25
[]
[]
(examples/TRISO/accident_simulation/triso2D_accident_ad.i)
# This example is 2D-RZ analysis of a TRISO fuel particle. Fully coupled
# heat transfer and solid mechanics, plus diffusion of the fission product
# species cesium (Cs) are simulated. The mesh includes contact surfaces
# between the buffer and IPyC layers to facilitate a gap opening between
# these layers. These surfaces are initially in mechanical contact but
# are assumed to have no strength in tension. A coarse mesh is used to
# provide a short run time.
# The calculation simulates fuel-life in three steps. The first step is an
# irradiation period, where constant power and a fixed particle surface
# temperature (1500 K) are assumed over a lifetime of 76 Ms (2.4 yrs).
# For the second step, fuel removal and storage are simulated by setting
# the reactor power and Cs source terms to zero, reducing the particle
# surface temperature to ambient (300 K), and then holding it
# for 100 days. A third and final step simulates accident
# behavior by increasing the particle surface temperature from ambient
# to 2073 K over 2 hrs, and then holding it at this elevated temperature
# for an additional 200 hrs. At the particle outer boundary, the Cs
# concentration is held at zero and the pressure at ambient during the
# entire simulation. The particle is assumed to be stress-free at an
# initial temperature of 1500 K.
#
# Details about this simulation are given in Section 4 of the following
# article: J. D. Hales, R. L. Williamson, S. R. Novascone, D. M. Perez,
# B. W. Spencer and G. Pastore, "Multidimensional multiphysics simulation
# of TRISO particle fuel", Journal of Nuclear Materials, Vol. 443, p. 531,
# 2013.
# This is a version using a thermomechanical mortar approach. It uses
# Automatic Differentiation classes and models gap mass transfer using
# flux preserving and sorption mortar constraints. Sorption constants are
# given in Table 1 of the following article: A. Londono-Hurtado, I.
# Szlufarska, R. Bratton and D. Morgan, "A review of fission product
# sorption in carbon structures", Journal of Nuclear Materials, Vol. 426,
# p. 254, 2012.
initial_fuel_density = 11000.0
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
flux_conversion_factor = 0.85
use_automatic_differentiation = true
[]
[Mesh]
coord_type = RZ
[file]
type = FileMeshGenerator
file = triso2Dmed.e
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp conc'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 1500.0
[]
[conc]
initial_condition = 0.0
[]
[conc_lm]
block = pellet_clad_mechanical_secondary_subdomain
[]
[conc_dx_lm]
block = pellet_clad_mechanical_secondary_subdomain
[]
[conc_dy_lm]
block = pellet_clad_mechanical_secondary_subdomain
[]
[]
[AuxVariables]
[fission_rate]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[fluence]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[creep_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_yy]
order = CONSTANT
family = MONOMIAL
[]
[creep_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 76e6 76.001e6'
y = '1 1 0'
[]
[temp_bc]
type = PiecewiseLinear
x = '0 76e6 76.001e6 84.641e6 84.6482e6'
y = '1500 1500 300 300 2073'
[]
[k_function]
type = PiecewiseLinear
x = '0 200e6'
y = '4e-37 4e-37'
[]
[d1_function]
type = ParsedFunction
expression = 'exp(t/4.5e25)'
[]
[integral_flux_error]
type = ParsedFunction
symbol_names = 'buffer_integral_flux IPyC_integral_flux'
symbol_values = 'buffer_integral_flux IPyC_integral_flux'
expression = 'IPyC_integral_flux + buffer_integral_flux'
[]
[partial_pressure_error]
type = ParsedFunction
symbol_names = 'buffer_partial_pressure IPyC_partial_pressure'
symbol_values = 'buffer_partial_pressure IPyC_partial_pressure'
expression = 'IPyC_partial_pressure - buffer_partial_pressure'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx hydrostatic_stress'
strain = FINITE
incremental = true
add_variables = false
[default]
block = 'fuel buffer IPyC OPyC'
eigenstrain_names = 'thermal_strain swelling_strain'
extra_vector_tags = 'ref'
[]
[SiC]
block = 'SiC'
eigenstrain_names = 'thermal_strain'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = 'fuel buffer IPyC SiC OPyC'
[]
[heat]
type = ADHeatConduction
variable = temp
extra_vector_tags = 'ref'
block = 'fuel buffer IPyC SiC OPyC'
[]
[heat_source]
type = ADNeutronHeatSource
variable = temp
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[mass_ie]
type = ADTimeDerivative
variable = conc
extra_vector_tags = 'ref'
block = 'fuel buffer IPyC SiC OPyC'
[]
[mass]
type = ADArrheniusDiffusion
variable = conc
extra_vector_tags = 'ref'
block = 'fuel buffer IPyC SiC OPyC'
[]
[mass_source]
type = ADBodyForce
variable = conc
function = power_history
value = 1.22e-5 # units of moles/m**3-s
block = fuel
extra_vector_tags = 'ref'
[]
[mass_decay]
type = Decay
variable = conc
radioactive_decay_constant = 7.297e-10 # units:(1/sec) The constant for Cesium
block = 'fuel buffer IPyC SiC OPyC'
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = fuel
fission_rate_function = power_history
value = 3.89e19
execute_on = timestep_begin
[]
[fluence]
type = ADMaterialRealAux
property = fast_neutron_fluence
variable = fluence
[]
[burnup]
type = ADBurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
execute_on = timestep_begin
density = ${initial_fuel_density}
[]
[creep_xx]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_xx
index_i = 0
index_j = 0
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[creep_yy]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_yy
index_i = 1
index_j = 1
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[creep_zz]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = creep_zz
index_i = 2
index_j = 2
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[]
[ThermalContactMortar]
[thermal]
secondary_variable = temp
primary_boundary = 15
secondary_boundary = 17
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
gap_geometry_type = CYLINDER
min_gap = 1e-7
max_gap = 50e-6
roughness_coef = 0.0
correct_edge_dropping = true
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 15
secondary = 17
model = frictionless
formulation = mortar
c_normal = 1.0e8
correct_edge_dropping = true
[]
[]
[Constraints]
[cesium_gap_value]
type = MassSorptionConstraint
variable = conc_lm
primary_variable = conc
primary_boundary = 15
primary_subdomain = pellet_clad_mechanical_primary_subdomain
secondary_variable = conc
secondary_boundary = 17
secondary_subdomain = pellet_clad_mechanical_secondary_subdomain
partial_pressure_name = partial_pressure
epsilon = 1e-4
correct_edge_dropping = true
[]
[cesium_gap_flux_x]
type = MassFluxConstraint
variable = conc_dx_lm
primary_variable = conc
diffusivity_primary = arrhenius_diffusion_coef
primary_boundary = 15
primary_subdomain = pellet_clad_mechanical_primary_subdomain
secondary_variable = conc
diffusivity_secondary = arrhenius_diffusion_coef
secondary_boundary = 17
secondary_subdomain = pellet_clad_mechanical_secondary_subdomain
component = 0
epsilon = 1e-5
correct_edge_dropping = true
[]
[cesium_gap_flux_y]
type = MassFluxConstraint
variable = conc_dy_lm
primary_variable = conc
diffusivity_primary = arrhenius_diffusion_coef
primary_boundary = 15
primary_subdomain = pellet_clad_mechanical_primary_subdomain
secondary_variable = conc
diffusivity_secondary = arrhenius_diffusion_coef
secondary_boundary = 17
secondary_subdomain = pellet_clad_mechanical_secondary_subdomain
component = 1
epsilon = 1e-5
correct_edge_dropping = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = ADDirichletBC
variable = disp_x
boundary = xzero
value = 0.0
extra_vector_tags = 'ref'
[]
[no_disp_y]
type = ADDirichletBC
variable = disp_y
boundary = yzero
value = 0.0
extra_vector_tags = 'ref'
[]
# fix temperature on free surface
[freesurf_temp]
type = ADFunctionDirichletBC
variable = temp
boundary = exterior
function = temp_bc
extra_vector_tags = 'ref'
[]
# fix concentration on free surface
[freesurf_conc]
type = ADDirichletBC
variable = conc
boundary = exterior
value = 0.0
extra_vector_tags = 'ref'
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = BufferGapVol
initial_pressure = 0
startup_time = 1.0e4
R = 8.3145
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = volumeGas # coupling to post processor to get gas volume
material_input = 'fis_gas_released co_production' # coupling to post processor to get fission gas added, co added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[flux]
type = ADFastNeutronFlux
calculate_fluence = true
factor = 5e17
[]
[fission_gas_release] # Sifgrs fission gas release mode
type = ADUO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius_const = 5.0e-6
[]
[fuel_thermal]
type = ADUO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
initial_porosity = 0.0
[]
[fuel_swelling]
type = ADUO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = fuel
temperature = temp
burnup = burnup
eigenstrain_name = 'swelling_strain'
initial_fuel_density = ${initial_fuel_density}
[]
[fuel_stress]
type = ADComputeFiniteStrainElasticStress
block = 'fuel'
[]
[fuel_elasticity]
type = ADComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.2e11
poissons_ratio = .345
[]
[fuel_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[fuel_den]
type = ADStrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density} # kg/m^3
[]
[fuel_conc]
type = ADArrheniusDiffusionCoef
block = fuel
d1 = 5.6e-8 # m^2/s
q1 = 209.0e+3 # J/mol
d2 = 5.2e-4 # m^2/s
q2 = 362.0e+3 # J/mol
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[buffer_eigenstrain]
type = ADPyCIrradiationEigenstrain
block = buffer
pyc_type = buffer
eigenstrain_name = 'swelling_strain'
[]
[buffer_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = buffer
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[buffer_elasticity]
type = ADComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e10
poissons_ratio = .23
[]
[buffer_stress]
type = ADPyCCreep
block = buffer
temperature = temp
[]
[buffer_temp]
type = ADHeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = ADStrainAdjustedDensity
strain_free_density = 1000.0 #kg/m^3
block = buffer
[]
[buffer_conc]
type = ADArrheniusDiffusionCoef
block = buffer
d1 = 1.0e-12 # m^2/s
q1 = 0.0
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[buffer_partial_pressure]
type = ADSorptionPartialPressure
A = 19.33
B = -47290
D = 1.518
E = 4338
d1 = 3.397
d2 = 6.15e-4
unit_scale = 1e3 # convert from mol to mmol
density = 1000 # convert from mmol/m^3 to mmol/kg, using constant for compatibility with default AD derivative container size
concentration = conc
temperature = temp
block = buffer
outputs = 'all'
output_properties = partial_pressure
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC buffer'
[]
[IPyC_eigenstrain]
type = ADPyCIrradiationEigenstrain
block = IPyC
pyc_type = dense
eigenstrain_name = 'swelling_strain'
[]
[IPyC_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = IPyC
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[IPyC_elasticity]
type = ADComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 4.74e10
poissons_ratio = .23
[]
[IPyC_disp]
type = ADPyCCreep
block = 'IPyC OPyC'
temperature = temp
[]
[IPyC_temp]
type = ADHeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[IPyC_den]
type = ADStrainAdjustedDensity
block = 'IPyC OPyC'
strain_free_density = 1900.0
[]
[IPyC_conc]
type = ADArrheniusDiffusionCoef
block = IPyC
d1 = 6.3e-8
q1 = 222.0e+3
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[IPyC_partial_pressure]
type = ADSorptionPartialPressure
A = 19.33
B = -47290
D = 1.518
E = 4338
d1 = 3.397
d2 = 6.15e-4
unit_scale = 1e3 # convert from mol to mmol
density = 1900 # convert from mmol/m^3 to mmol/kg, using constant for compatibility with default AD derivative container size
concentration = conc
temperature = temp
block = IPyC
outputs = 'all'
output_properties = partial_pressure
[]
[SiC_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[SiC_elasticity]
type = ADComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.4e11
poissons_ratio = .13
[]
[SiC_creep]
type = ADMonolithicSiCCreepUpdate
block = SiC
temperature = temp
k_function = k_function
[]
[SiC_stress]
type = ADComputeMultipleInelasticStress
block = SiC
inelastic_models = 'SiC_creep'
[]
[SiC_temp]
type = ADHeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = ADStrainAdjustedDensity
strain_free_density = 3180.0 # kg/m^3
block = SiC
[]
[SiC_conc]
type = ADArrheniusDiffusionCoef
block = SiC
d1 = 5.5e-14 # m^2/s
d1_function = d1_function
d1_function_variable = fluence
q1 = 125.0e+3 # J/mol
d2 = 1.6e-2 # m^2/s
q2 = 514.0e+3 # J/mol
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[OPyC_eigenstrain]
type = ADPyCIrradiationEigenstrain
block = OPyC
pyc_type = dense
eigenstrain_name = 'swelling_strain'
[]
[OPyC_thermal_strain]
type = ADComputeThermalExpansionEigenstrain
block = OPyC
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[OPyC_elasticity]
type = ADComputeIsotropicElasticityTensor
block = OPyC
youngs_modulus = 4.74e10
poissons_ratio = .23
[]
[OPyC_conc]
type = ADArrheniusDiffusionCoef
block = OPyC
d1 = 6.3e-8 # m^2/s
q1 = 222.0e+3 # J/mol
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-14'
snesmf_reuse_base = false
line_search = 'none'
nl_rel_tol = 5e-4
nl_abs_tol = 1e-10
nl_max_its = 20
l_max_its = 8
start_time = 0.0
end_time = 85.3682e6
dt = 100
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 10
growth_factor = 1.5
linear_iteration_ratio = 100
time_t = '0 76e6 76.001e6 84.641e6 84.6482e6'
time_dt = '20 20 20 20 20'
[]
[Predictor]
type = SimplePredictor
scale = 0.5
skip_times_old = '0 76e6 76.001e6 84.641e6 84.6482e6'
[]
[]
[Outputs]
perf_graph = true
exodus = true
[console]
type = Console
max_rows = 25
[]
[csv]
type = CSV
sync_times = '100 6308007 75696087'
sync_only = true
[]
[]
[Postprocessors]
[Cs_release]
type = ADSideDiffusiveFluxIntegral
variable = conc
diffusivity = arrhenius_diffusion_coef
boundary = exterior
execute_on = timestep_end
[]
[dt]
type = TimestepSize
execute_on = timestep_end
[]
[fis_gas_produced] # fission gas produced (moles)
type = ADElementIntegralFisGasGeneratedSifgrs
block = fuel
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ADElementIntegralFisGasReleasedSifgrs
block = fuel
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
execute_on = 'initial timestep_end'
[]
[volumeFuel]
type = InternalVolume
boundary = fuel
execute_on = 'initial timestep_end'
[]
[volumeGas]
type = InternalVolume
boundary = BufferGapVol
# ro = 3.125e-4
# ri = 2.125e-4
# vb = 4/3*pi*(ro^3-ri^3) = 8.76e-11
# buffer density = 1000
# PyC density = 1900
# fill ratio = 10/19
# vb*10/19 = 4.6e-11
# Must remove 4.6e-11 m^3 from the volume
addition = -4.6e-11
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = BufferGapVol
execute_on = 'initial timestep_end'
[]
[ave_temp_interior]
type = SideAverageValue
boundary = BufferGapVol
variable = temp
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[avg_surface_temp]
type = SideAverageValue
variable = temp
boundary = exterior
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[buffer_integral_flux]
type = ADSideDiffusiveFluxIntegral
variable = conc
boundary = 17
diffusivity = arrhenius_diffusion_coef
[]
[IPyC_integral_flux]
type = ADSideDiffusiveFluxIntegral
variable = conc
boundary = 15
diffusivity = arrhenius_diffusion_coef
[]
[buffer_partial_pressure]
type = ADSideAverageMaterialProperty
property = partial_pressure
boundary = 17
[]
[IPyC_partial_pressure]
type = ADSideAverageMaterialProperty
property = partial_pressure
boundary = 15
[]
[integral_flux_error]
type = FunctionValuePostprocessor
function = integral_flux_error
[]
[partial_pressure_error]
type = FunctionValuePostprocessor
function = partial_pressure_error
[]
[integral_Cs_release]
type = TimeIntegratedPostprocessor
value = Cs_release
[]
[Cs_production]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 1.22e-5 # units of moles/m**3-s
[]
[time_integral_Cs_production]
type = TimeIntegratedPostprocessor
value = Cs_production
[]
[volumeFuel_initial]
type = InternalVolume
boundary = fuel
execute_on = initial
[]
[integral_Cs_production]
type = ParsedPostprocessor
pp_names = 'time_integral_Cs_production volumeFuel_initial'
expression = 'time_integral_Cs_production * volumeFuel_initial'
[]
[Cs_release_fraction]
type = ParsedPostprocessor
pp_names = 'integral_Cs_release integral_Cs_production'
expression = 'integral_Cs_release / integral_Cs_production'
[]
[]
[VectorPostprocessors]
[temperaturevpp]
type = SideValueSampler
boundary = 11
variable = temp
sort_by = x
outputs = 'csv'
use_displaced_mesh = true
[]
[]
(test/tests/ifba_he_production/fill_gas_xenon_w_ifba.i)
#
# 2-D RZ One Pellet Test - IFBA using Xenon as fill gas
#
# This test is of a single pellet with cladding and a specified initial
# pressure of Xe fill gas. In addition, an IFBA layer is added which will
# generate He gas to be added to the plenum. The postprocessor interior_temp
# should be the same as the pure Xe test case initially and as the He gas is
# added to the plenum from the IFBA, the interior_temp value should approach
# the He fill gas test case (both in the doc subdirectory).
#
# This model demonstrates that the gas conductance for the plenum is being
# updated for the He gas generated by the IFBA layer.
#
initial_fuel_density = 10431.0 #95% TD (TD = 10980)
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
displacements = 'disp_x disp_y'
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 1
nx_p = 1
nx_c = 1
ny_cu = 1
ny_c = 1
ny_cl = 1
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[grain_radius]
block = '3'
initial_condition = 5e-6
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 20e3 # 20 kW/m peak power.
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = fuel_thermal_strain
[]
[clad]
block = 1
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = clad_thermal_strain
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
value = 5.3548e+14
fission_rate_function = power_history
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = 'fis_gas_released he_prod'
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_gas_types = Xe
initial_fractions = 1
released_gas_types = 'Kr Xe;
He'
released_fractions = '0.153 0.847;
1'
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Clad_Temp]
type = DirichletBC
variable = temp
boundary = '2'
value = 580.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
startup_time = 0.0
material_input = 'fis_gas_released he_prod'
output_initial_moles = initial_moles
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 298
eigenstrain_name = fuel_thermal_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[fclad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 298
eigenstrain_name = clad_thermal_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 5.3e7 # 1.7 years (~3% burnup)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e5 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01 # change: length of fuel stack in meters (1 pellet height)
[]
[he_prod]
type = IFBAHeProduction
zrb2_load = 1.181e-4
ifba_len = 1.0e-2
b10_enrich = 0.50
zrb2_rel_dens = 0.7
model = burnup
u235_enrich = 0.045
burnup = average_burnup
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup burnup he_prod interior_temp plenum_pressure'
file_base = fill_gas_xenon_w_ifba_check
[]
[out]
type = CSV
delimiter = ' '
[]
[]
(examples/2D-RZ_rodlet_10pellets/quad8/Quad8.i)
# This model is a higher order, discrete 10 pellet fuel stack (pellet_type_1).
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
# Import mesh file
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ../quad8Medium10_rz.e
[]
[]
[Variables]
# Define dependent variables and initial conditions
[temp]
initial_condition = 293.0 # set initial temp to fill gas temperature, usually 20C
[]
[]
[AuxVariables]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
# Define functions to control power and boundary conditions
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ../powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = ../peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[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]
# Define kernels for the various terms in the PDE system
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1 # fission rate applied to the fuel (block 2) only
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[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
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
# Define boundary conditions
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor] # isotropic elasticity tensor for UO2
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress] # elastic stress for UO2 (used instead of creep)
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion] # thermal expansion strain for UO2
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0 #Changed to match the value used in Zry
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation] # relocation strain measure for UO2
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160.0e-6
diameter = 0.0082
burnup_relocation_stop = 0.035
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling] # free expansion strains (swelling and densification) for UO2 (BISON kernel)
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
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor] # isotropic elasticity tensor for Zry cladding
type = ZryElasticityTensor
block = clad
[]
[clad_stress] # stress update class to govern the return mapping algorithm for creep
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep] # creep for zircaloy cladding
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
zircaloy_material_type = stress_relief_annealed
[]
[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
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
# outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
# outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
# Stress Measures
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet_type_1
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
#Strain measures
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet_type_1
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
# Contact variables
[center_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 2887 # mesh dependent, at (0.0041, 0.0558887), near bottom of pellet 5
[]
[center_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 2887 # mesh dependent, at (0.0041, 0.0558887), near bottom of pellet 5
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
[VectorPostprocessors]
[clad]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(test/tests/sifgrs/uo2/ad_fast_mox.i)
# This test is for the application of Sifgrs to FBR MOX fuel.
# A lower limit for the grain-boundary bubble number density of 1.0e+11 bubbles/m2 is applied, which is recommended for FBR MOX simulations.
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '2000'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e20'
[]
[]
[Variables]
[T]
initial_condition = 2000
[]
[]
[AuxVariables]
[fission_rate]
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[deltav_v0_bubble_GB]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[nbbl2]
type = ADMaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[gbswe]
type = ADMaterialRealAux
variable = deltav_v0_bubble_GB
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[MOX]
type = ADHeatConductionMaterial
block = 0
thermal_conductivity = 2.5
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 0
temperature = T
fission_rate = fission_rate
initial_porosity = 0.0
grain_radius_const = 8.0e-6
diff_coeff_option = TURNBULL_D1_4D2_4D3
bubble_gb_limit = 1.0e+11 #recommended value for fast MOX fuels
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 100
dt = 19800.
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 0
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 0
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
execute_on = linear
[]
[bubble_num_grain_boundary]
type = ElementalVariableValue
variable = bbl_bdr_2
elementid = 0
[]
[swelling_grain_boundary]
type = ElementalVariableValue
variable = deltav_v0_bubble_GB
elementid = 0
[]
[]
[Outputs]
exodus = false
csv = true
[]
(test/tests/sifgrs/uo2/mechanistic_igmodel.i)
# @Requirement F2.40
# This test is for evaluating the mechanistic model for the intra-granular fission gas behavior and bubble evolution in the Sifgrs fission gas model.
#
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1273'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
initial_condition = 1273
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[bbl_cnc]
type = MaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
execute_on = 'TIMESTEP_END'
[]
[rad_bbl]
type = MaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
execute_on = 'TIMESTEP_END'
[]
[gascnc_bbl]
type = MaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
grain_radius_const = 5.e-6
ig_bubble_model = NUCLEATION_RESOLUTION
initial_porosity = 0.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 10
dt = 19800.
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[]
[Outputs]
exodus = true
[]
(examples/2D-RZ_rodlet_10pellets/2D_discrete_finiteStrain/2D_discrete_finiteStrain.i)
# This model is a linear element, 10 discrete fuel pellet stack (pellet_type_1) with a fine mesh.
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
# Import mesh file
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ../fine10_rz.e
[]
[]
[Variables]
# Define dependent variables and initial conditions
[temp]
initial_condition = 580.0 # set initial temp to coolant inlet
order = FIRST
[]
[]
[AuxVariables]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
# Define functions to control power and boundary conditions
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ../powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = ../peakingfactors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[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]
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1 # fission rate applied to the fuel (block 2) only
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[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
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
# Define boundary conditions
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
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
diametral_gap = 160.0e-6
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 = UO2Sifgrs
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 = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = THIRD
side_order = FIFTH
[]
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial linear'
[]
[ave_fuel_temp]
type = ElementAverageValue
block = pellet_type_1
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[_dt] # time step
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[mid_penetration]
type = NodalVariableValue
nodeid = 3781 #!!Mesh dependent!!
variable = penetration
[]
[central_fuel_temp]
type = NodalVariableValue
variable = temp
nodeid = 3781 # !! Mesh dependent
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temp
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet_type_1
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[effective_creep_strain]
type = ElementAverageValue
block = clad
variable = effective_creep_strain
[]
[effective_creep_strain_rate]
type = ElementAverageValue
block = clad
variable = creep_strain_rate
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(tools/inputwizard/tests/2D_discrete_finiteStrain_nuc_mat_action_integrated.i)
# This model is a linear element, 10 discrete fuel pellet stack (pellet_type_1) with a fine mesh.
[GlobalParams]
# Set initial fuel density, other global parameters
density = 10431.0
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
temperature = temperature
grain_radius = grain_radius
order = FIRST #Mesh element dictate this
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = './2D-RZ_rodlet_10pellets/fine10_rz.e'
[]
[]
[AuxVariables]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = './2D-RZ_rodlet_10pellets/powerhistory.csv'
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = './2D-RZ_rodlet_10pellets/peakingfactors.csv'
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[]
[AuxKernels]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temperature_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[NuclearMaterials]
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
fission_operation = Normal
physics = 'Mechanics Thermal'
initial_temperature = 580.0
strain = FINITE
[UO2]
[fuel]
block = pellet_type_1
uo2_models = 'Burnup Elastic Relocation Swelling ThermalExpansion'
stress_free_temperature = 580.0
fuel_volume_ratio = 0.987787
burnup_relocation_stop = 0.03
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
extra_vector_tags = 'ref'
[]
[]
[ZirconiumAlloy]
[clad]
block = clad
cladding_models = 'Elastic Creep IrradiationGrowth ThermalExpansion'
stress_free_temperature = 295.0
extra_vector_tags = 'ref'
[]
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = THIRD
side_order = FIFTH
[]
[]
[Postprocessors]
[ave_temperature_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temperature]
type = SideAverageValue
boundary = 7
variable = temperature
execute_on = 'initial linear'
[]
[ave_fuel_temperature]
type = ElementAverageValue
block = pellet_type_1
variable = temperature
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[_dt]
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[mid_penetration]
type = NodalVariableValue
nodeid = 3781 #!!Mesh dependent!!
variable = penetration
[]
[central_fuel_temperature]
type = NodalVariableValue
variable = temperature
nodeid = 3781 # !! Mesh dependent
[]
[max_fuel_temperature]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temperature
[]
[max_clad_temperature]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet_type_1
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[effective_creep_strain]
type = ElementAverageValue
block = clad
variable = effective_creep_strain
[]
[effective_creep_strain_rate]
type = ElementAverageValue
block = clad
variable = creep_strain_rate
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(examples/NuclearMaterialActions/LWR/Normal/2D_discrete_finiteStrain_action/2D_discrete_finiteStrain_action.i)
# This model is a linear element, 10 discrete fuel pellet stack (pellet_type_1) with a fine mesh.
[GlobalParams]
# Set initial fuel density, other global parameters
density = 10431.0
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
temperature = temperature
grain_radius = grain_radius
order = FIRST #Mesh element dictate this
family = LAGRANGE
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
# Import mesh file
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = '../../../../2D-RZ_rodlet_10pellets/fine10_rz.e'
[]
[]
[Variables]
# Define dependent variables and initial conditions
[temperature]
initial_condition = 580.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
# Define auxilary variables
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
# Define functions to control power and boundary conditions
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = '../../../../2D-RZ_rodlet_10pellets/powerhistory.csv'
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = '../../../../2D-RZ_rodlet_10pellets/peakingfactors.csv'
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[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_strain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet_type_1 # fission rate applied to the fuel (block 2) only
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent!
a_upper = 0.12184 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
# Define boundary conditions
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temperature_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[NuclearMaterials]
fission_operation = Normal
[UO2]
[fuel]
block = pellet_type_1
uo2_models = 'Elastic Relocation Swelling ThermalExpansion'
stress_free_temperature = 295.0
localized_initial_temperature = 580.0
rod_ave_lin_pow = power_history
burnup_relocation_stop = 0.03
[]
[]
[ZirconiumAlloy]
[clad]
block = clad
cladding_models = 'Elastic Creep ThermalExpansion IrradiationGrowth'
stress_free_temperature = 295.0
localized_initial_temperature = 580.0
[]
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = THIRD
side_order = FIFTH
[]
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[ave_temperature_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temperature] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temperature
execute_on = 'initial linear'
[]
[ave_fuel_temperature]
type = ElementAverageValue
block = pellet_type_1
variable = temperature
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[_dt] # time step
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[mid_penetration]
type = NodalVariableValue
nodeid = 3781 #!!Mesh dependent!!
variable = penetration
[]
[central_fuel_temperature]
type = NodalVariableValue
variable = temperature
nodeid = 3781 # !! Mesh dependent
[]
[max_fuel_temperature]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temperature
[]
[max_clad_temperature]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet_type_1
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[effective_creep_strain]
type = ElementAverageValue
block = clad
variable = effective_creep_strain
[]
[effective_creep_strain_rate]
type = ElementAverageValue
block = clad
variable = creep_strain_rate
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_9/case_9_1D.i)
#
# This case is taken from Advances in high temperature gas cooled reactor fuel
# technology. Technical Report IAEA-TECDOC-1674, International Atomic Energy
# Agency, 2012.
#
# The correctness of the results computed by this case must be checked against
# results from the IAEA benchmark.
#
initial_fuel_density = 10840.0
[GlobalParams]
density = ${initial_fuel_density} # kg/m^3
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DFiveLayerMeshGenerator
elem_type = EDGE3
kernel_radius = 272e-6
buffer_thickness = 97e-6
IPyC_thickness = 33e-6
SiC_thickness = 34e-6
OPyC_thickness = 39e-6
kernel_mesh_density = 6
buffer_mesh_density = 6
IPyC_mesh_density = 6
SiC_mesh_density = 8
OPyC_mesh_density = 6
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1576.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 1.5060805e20 # units of fissions/m**3/s
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[IPyC_OPyC]
block = 'IPyC OPyC'
strain = finite
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[rest]
block = 'fuel buffer SiC'
strain = finite
eigenstrain_names = thermal_strain
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
# contact_pressure_input = 10e6
# quadrature = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1576.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure] # apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = volumeGas # coupling to post processor to get gas volume
material_input = 'fis_gas_released co_production' # coupling to post processor to get fission gas added, co added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 2.730961e18 # n/m^2-sec
[]
[fission_gas_release] # Sifgr fission gas release mode
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1576.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1576.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1576.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temperature]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1100 #kg/m^3
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_temperature]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1850.0 # kg/m^3
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temperature]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0 # kg/m^3
block = SiC
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 1e-7
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 7689600
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
# ro = 369e-6
# ri = 272e-6
# vb = 4/3*pi*(ro^3-ri^3) = 1.26e-10
# buffer density = 1100
# PyC density = 1850
# fill ratio = 1100/1850
# vb*1100/1850 = 7.50e-11
# Must remove 7.50e-11 m^3 from the volume
addition = -7.50e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
exodus = true
csv = true
perf_graph = true
[]
(test/tests/sifgrs/uo2/ad_polypole1.i)
# @Requirement F2.40
# This test is for evaluating the PolyPole-1 algorithm (for the intra-granular diffusion calculation)
# in the Sifgrs fission gas behavior model.
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[FRA]
type = ADMaterialRealAux
variable = fract_FGR_analytical
property = fract_FGR_analytical
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 1
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
testing_output = true
ig_diff_algorithm = POLYPOLE1
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 1
[]
[]
[Outputs]
[out]
type = Exodus
[]
[]
(assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-2kW.i)
################################################################################
#
# Description: LOCA MT-4 Test with constant power level of 1.2 kW/m
#
#
# External files:
# axial peaking factor file MT4_axial_peaking.csv
#
################################################################################
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
group_variables = 'disp_x disp_y'
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 6.1e-4
pellet_mesh_density = customize
ny_p = 100
nx_c = 4
nx_p = 12
pellet_outer_radius = .00413
ny_cu = 3
ny_c = 100
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.66
ny_cl = 3
clad_top_gap_height = 0.18613
clad_gap_width = 7.5e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 253
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[]
[AuxVariables]
[temp_initial]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 7.8e-6 # 2D grain radius
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[hmode]
order = CONSTANT
family = MONOMIAL
[]
[htype]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 110'
y = '1.2e3 1.2e3'
[]
[hmode_function]
type = PiecewiseConstant
x = '0 57 110'
y = '9 10 10'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = MT4_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '0 110'
y = '0.28 0.28'
scale_factor = 1e6
[]
[temp_func]
type = ParsedFunction
expression = '-24.096*y*y+152.47*y+437.81'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors' # W/m
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz elastic_strain_yy strain_xx strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress' #plastic_strain_xx plastic_strain_yy plastic_strain_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
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
axial_power_profile = axial_peaking_factors
factor = 0.16e15 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = hmode
boundary = 2
[]
[htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = htype
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = clad
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
block = clad
execute_on = timestep_end
[]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
block = clad
execute_on = timestep_end
[]
[burst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
# TODO: Have StandardLWRFuelRodOutputs create this when the feature in issue #1054 is
# developed.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.66478
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00413 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0293 .9707 0 0 0 0'
RPF = RPF
density = 10431.0 #95 %TD Assume TD = 10980 kg/cm3
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
normalize_penalty = true
model = frictionless
# model = coulomb
formulation = penalty
# friction_coefficient = 1.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.0 # Pa
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 9.3e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 311 # K
inlet_pressure = 0.28e6 # Pa
# inlet_massflux = massfluxfunc # kg/m^2-sec
rod_diameter = 0.00963 # m
rod_pitch = 1.275e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
heat_transfer_mode = hmode_function
heat_transfer_coefficient = 0.0000001 #W/m^2-K
# heat_transfer_mode = 10
htc_correlation_type = 1
flooding_time = 57.0
flooding_rate = 0.127 # m/s
initial_temperature = 1140 # K
initial_power = 1.776 # kW/m
blockage_ratio = 0.0 #
fuel_stack_length = 3.66 # m
reflooding_model = 1
compute_enthalpy = false
[]
[]
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = temp_initial
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0 #95 %TD Assume TD = 10980 kg/cm3
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
# initial_grain_radius = 6.552e-6 # 2D grain radius 4.2e-6
grain_radius = grain_radius
gbs_model = true
burnup = burnup
# compute_swelling = true
transient_option = MICROCRACKING
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 10431 #95 %TD Assume TD = 10980 kg/cm3
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temp
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_standard_thermal_creep_end = 700.0
temperature_loca_creep_begin = 900.0
max_inelastic_increment = 1e-4
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
temperature = temp
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = temp_initial
eigenstrain_name = clad_thermal_eigenstrain
[]
[phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temp
fraction_beta_phase = fract_beta_phase
outputs = all
output_properties = 'failed burst_stress'
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0.0
end_time = 58.2
dtmax = 5
dtmin = 0.00001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 0.01
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
execute_on = timestep_end
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
fission_rate = fission_rate
variable = temp
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.66 # rod height
execute_on = timestep_end
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_creep_rate]
type = ElementExtremeValue
block = clad
value_type = max
variable = creep_rate_aux
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 40
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.2
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9144
pellet_outer_radius = 2.794e-3
pellet_inner_radius = 6.985e-4
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 101.6e-6
clad_thickness = 0.5334e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.057
elem_type = QUAD8
nx_c = 4
ny_c = 1000
nx_p = 10
ny_p = 500
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
scaling = 1
[]
[]
[AuxVariables]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fraction_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 0.854004932 0.854004932'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 2.99513e+19 2.99513e+19'
[]
[axial_power_profile]
type = PiecewiseBilinear
x = '0.0334152 0.09468 0.1559448 0.2162952 0.27756 0.3388248 0.3991752 0.46044 0.5217048 0.5820552 0.64332 0.7045848 0.7649352 0.8262 0.8874648'
y = '0 31858942.74'
z = '5493.43832 7183.727034 29157.48031 34228.34646 37608.92388 40144.35696 41412.07349 42257.21785 41834.64567 39721.78478 37608.92388 33805.77428 28312.33596 4225.721785 2535.433071 5041.338583 6592.519685 26757.87402 31411.41732 34513.77953 36840.55118 38003.93701 38779.52756 38391.73228 36452.75591 34513.77953 31023.62205 25982.28346 3877.952756 2326.771654'
scale_factor = 1
axis = 1
[]
[average_power_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 24264.05646 24264.05646'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[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
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.2
axial_power_profile = axial_power_profile
rod_ave_lin_pow = fraction_history
pellet_diameter = 0.005588
execute_on = timestep_begin
pellet_inner_diameter = 0.001397
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 0.151e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 0.151e6
inlet_massflux = 1687.43
rod_diameter = 6.858e-3
rod_pitch = 1.7e-2
linear_heat_rate = fraction_history
axial_power_profile = axial_power_profile
coolant_material = sodium
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = 0.2
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
outputs = exodus
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius_const = 10e-06
bubble_gb_limit = 1.0e+11
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fast_neutron_flux]
type = GenericFunctionMaterial
block = clad
prop_names = fast_neutron_flux
prop_values = fast_neutron_flux_function
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 31858942.74
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = fraction_history
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.9144 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = fftf_fo2_L09_new_chkfile
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/fuelrodlinevaluesampler/example_problem_smeared_test2.i)
[GlobalParams]
density = 10431.0
displacements = 'disp_x disp_y'
energy_per_fission = 3.2e-11 # J/fission
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = auto
patch_size = 10
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = SmearedTwoPelletOneType2D.e
[]
[]
[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
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'fuel_volumetric_swelling_eigenstrain
fuel_relocation_eigenstrain fuel_thermal_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
incremental = true
extra_vector_tags = 'ref'
add_variables = true
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[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
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = 'pin_geometry'
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[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
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'initial timestep_end'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial timestep_end'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
contact_pressure = contact_pressure
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = -200
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
initial_porosity = 0.0
temperature = temp
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet_type_1
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_1
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = pellet_type_1
stress_free_temperature = 295
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[hotpressing]
type = UO2HotPressingCreepUpdate
block = pellet_type_1
burnup_function = burnup
initial_grain_radius = 10.0e-6
[]
[radial_return_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'hotpressing'
block = pellet_type_1
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
fuel_pin_geometry = 'pin_geometry'
relocation_activation1 = 5000 #TM default value
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 1.e20
eigenstrain_name = fuel_relocation_eigenstrain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_creep_model]
type = ZryCreepHayesHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
model_irradiation_creep = true
model_thermal_creep = true
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = 10431.0
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 300
[]
[]
[Preconditioning]
[SMP]
type = SMP
coupled_groups = 'disp_x,disp_y'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-pc_type_asm'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-5 #8e-3
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-8
start_time = -200
num_steps = 2
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
optimal_iterations = 6
iteration_window = 2
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = timestep_end
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = timestep_end
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
component = 1
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[_dt] # time step
type = TimestepSize
execute_on = timestep_end
[]
[nonlinear_its] # number of nonlinear iterations at each timestep
type = NumNonlinearIterations
execute_on = timestep_end
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
execute_on = 'initial timestep_end'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.02372 # rod height
execute_on = 'initial timestep_end'
[]
[]
[VectorPostprocessors]
[fuel_vonmises]
type = FuelRodLineValueSampler
variable = vonmises_stress
material = 'fuel'
fraction = 0.51
num_points = 20
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
outputs = chkfile
[]
[clad_vonmises]
type = FuelRodLineValueSampler
variable = vonmises_stress
material = 'clad'
fraction = 0.51
num_points = 20
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
outputs = chkfile
[]
[]
[Outputs]
exodus = true
color = false
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = 'FINAL'
[]
[]
(examples/2D_plane_strain_fretting_wear/fretting-wear-initial.i)
initial_fuel_density = 10431.0
[GlobalParams]
temperature = temp
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
[]
[Mesh]
[file]
type = FileMeshGenerator
file = refined_excitation_better_mesh.e
[]
construct_node_list_from_side_list = true
patch_size = 100 # For contact algorithm
[]
[Variables]
[temp]
initial_condition = 580.0 # set initial temp to ambient
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y '
converge_on = 'disp_x disp_y temp'
material_coverage_check = false
kernel_coverage_check = false
# restart_file_base = planestrain_grid_aux_vars_out_cp/LATEST
[]
[AuxVariables]
[fission_rate]
block = pellet_type_1
[]
[burnup]
block = pellet_type_1
[]
[fast_neutron_flux]
block = 'clad grid'
[]
[fast_neutron_fluence]
block = 'clad grid'
[]
[relocation_strain]
order = CONSTANT
family = MONOMIAL
[]
[worn_depth]
order = FIRST
family = LAGRANGE
block = 'spacer_clad_mechanical_secondary_subdomain'
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[pressure_var] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '0 1e4'
y = '0 1'
[]
[pressure_var_variable] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = ParsedFunction
expression = 'if(t < 1e4, 1, 1 + sin((t-1e4)*pi/10.0) * (t-1e4))'
[]
[]
[Physics/SolidMechanics/Dynamic]
[pellets]
add_variables = true
newmark_beta = 0.25
newmark_gamma = 0.5
block = pellet_type_1
strain = FINITE
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
temperature = temp
extra_vector_tags = 'ref'
[]
[clad]
add_variables = true
newmark_beta = 0.25
newmark_gamma = 0.5
block = clad
strain = FINITE
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
temperature = temp
extra_vector_tags = 'ref'
[]
[grid]
add_variables = true
newmark_beta = 0.25
newmark_gamma = 0.5
block = grid
strain = FINITE
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'grid_thermal_eigenstrain grid_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
temperature = temp
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
block = 'pellet_type_1 clad grid'
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
block = 'pellet_type_1 clad'
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = pellet_type_1
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[spacer_clad_mechanical]
formulation = mortar
model = coulomb
primary = 101
secondary = 102
c_normal = 1e+16 # 1e+7
c_tangential = 1e+20
friction_coefficient = 0.4
# Do not apply dynamic stabilization
newmark_beta = 0.0001
newmark_gamma = 0.5
capture_tolerance = 0.0
mortar_dynamics = true
interpolate_normals = false
generate_mortar_mesh = true
wear_depth = worn_depth
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical_real]
formulation = mortar
model = frictionless
primary = 7
secondary = 8
c_normal = 1e+16 #
c_tangential = 1e+16
friction_coefficient = 0.4
# Do not apply dynamic stabilization
newmark_beta = 0.0001
newmark_gamma = 0.5
capture_tolerance = 0.0
mortar_dynamics = true
interpolate_normals = false
generate_mortar_mesh = true
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = 7
secondary_boundary = 8
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 21
axial_axis = 2
density = ${initial_fuel_density}
a_lower = -1e-3 # mesh dependent!
a_upper = 1e-3 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
RPF = RPF
[]
[]
[AuxKernels]
[worn_depth]
type = MortarArchardsLawAux
variable = worn_depth
primary_boundary = 101
secondary_boundary = 102
primary_subdomain = 'spacer_clad_mechanical_primary_subdomain'
secondary_subdomain = 'spacer_clad_mechanical_secondary_subdomain'
displacements = 'disp_x disp_y'
friction_coefficient = 0.5
energy_wear_coefficient = 0.1e-9
normal_pressure = spacer_clad_mechanical_normal_lm
execute_on = 'TIMESTEP_END'
[]
[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
[]
[relocation_strain]
type = MaterialRealAux
property = relocation_strain
variable = relocation_strain
block = pellet_type_1
execute_on = timestep_end
[]
[]
[BCs]
# Define boundary conditions
[no_y_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_y
boundary = 15
value = 0.0
[]
[no_x_all] # pin pellets and clad along axis of symmetry (x)
type = DirichletBC
variable = disp_x
boundary = 16
value = 0.0
[]
[no_y_all_grid] # pin pellets and clad along axis of symmetry (y)
type = FunctionDirichletBC
variable = disp_y
boundary = '112'
function = 'if(t < 1.0e4,1.0e-4 * t/1.0e4 - 1.0e-5,0.9e-4)'
[]
[no_x_all_grid] # pin pellets and clad along axis of symmetry (x)
type = DirichletBC
variable = disp_x
boundary = '112'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = pressure_var # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[convective_clad_surface] # apply convective boundary to clad outer surface
type = ConvectiveFluxBC
boundary = '2'
variable = temp
rate = 38200.0 #convection coefficient (h)
initial = 580.0
final = 580.0
duration = 1.0e4 #duration of initial power ramp
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = pellet_type_1
temperature = temp
burnup = burnup
initial_porosity = 0.0
[]
[fuel_solid_mechanics_swelling] # free expansion strains (swelling and densification) for UO2 (BISON kernel)
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = pellet_type_1
burnup = burnup
initial_fuel_density = 10431.0
temperature = temp
eigenstrain_name = 'fuel_volumetric_eigenstrain'
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet_type_1
temperature = temp
fission_rate = fission_rate
density = 10431.0
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'pellet_type_1'
youngs_modulus = 906e6
poissons_ratio = 0.345
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
block = pellet_type_1
inelastic_models = 'fuel_creep'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup = burnup
diameter = 0.0082
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160e-6
burnup_relocation_stop = 1.e20
relocation_activation1 = 5000
axial_axis = 2
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 'clad'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 'clad'
[]
[clad_creep_model]
type = ZryCreepHayesHoppeUpdate
block = 'clad'
fast_neutron_flux = fast_neutron_flux
temperature = temp
zircaloy_material_type = stress_relief_annealed
model_irradiation_creep = true
model_thermal_creep = true
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = 'clad'
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'clad'
thermal_expansion_coeff = 5.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irrgrowth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
axial_direction = 2
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = 'clad_irradiation_eigenstrain'
[]
[grid_thermal]
type = HeatConductionMaterial
block = 'grid'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[grid_elasticity_tensor]
type = ZryElasticityTensor
block = 'grid'
[]
[grid_creep_model]
type = ZryCreepHayesHoppeUpdate
block = 'grid'
fast_neutron_flux = fast_neutron_flux
temperature = temp
zircaloy_material_type = stress_relief_annealed
model_irradiation_creep = true
model_thermal_creep = true
[]
[grid_stress]
type = ComputeMultipleInelasticStress
block = 'grid'
tangent_operator = elastic
inelastic_models = 'grid_creep_model'
[]
[grid_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'grid'
thermal_expansion_coeff = 5.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'grid_thermal_eigenstrain'
[]
[grid_irrgrowth]
type = ZryIrradiationGrowthEigenstrain
block = grid
fast_neutron_fluence = fast_neutron_fluence
axial_direction = 2
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = 'grid_irradiation_eigenstrain'
[]
[fission_gas_release] # Forsberg-Massih fission gas release mode
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius = 10.0e-6
#external_pressure = 40e6
[]
[clad_density]
type = StrainAdjustedDensity
block = 'clad'
density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 10431.0
[]
[grid]
type = StrainAdjustedDensity
block = grid
density = 6560
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-6 NONZERO 1e-10'
snesmf_reuse_base = true
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 45
nl_rel_tol = 1e-10 # was -7 and nl 25. Tightening tangential contact forces.
nl_abs_tol = 1e-12
[TimeIntegrator]
type = NewmarkBeta
beta = 0.25
gamma = 0.5
[]
start_time = 0.0
end_time = 1.0e5
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
time_t = '1e4 1e5 1e6'
time_dt = '2e2 1e4 1e5'
growth_factor = 1.4
iteration_window = 5.0
optimal_iterations = 35
[]
dtmax = 2e5 # Larger causes instabilities 2e6
dtmin = 1
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[average_interior_clad_temperature] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[average_centerline_fuel_temperature] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[plenum_temperature]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial timestep_end'
[]
[plenum_volume] # gas volume
type = InternalVolume
boundary = 9
addition = 1.3e-5 #rough guess of plenum volume/unit length of fuel
execute_on = 'initial linear'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_generated] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = linear
[]
[fission_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = linear
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[_dt] # time step
type = TimestepSize
execute_on = timestep_end
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet_type_1
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
execute_on = timestep_end
[]
[fission_gas_released_percentage]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fission_gas_generated
[]
[]
[VectorPostprocessors]
[contact_pressure]
type = NodalValueSampler
sort_by = x
use_displaced_mesh = true
variable = spacer_clad_mechanical_normal_lm
boundary = 102
[]
[frictional_pressure]
type = NodalValueSampler
sort_by = x
use_displaced_mesh = true
variable = spacer_clad_mechanical_tangential_lm
boundary = 102
[]
[worn_depth]
type = NodalValueSampler
sort_by = x
use_displaced_mesh = true
variable = worn_depth
boundary = 102
execute_on = TIMESTEP_END
[]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
max_rows = 25
[]
checkpoint = true
[]
(assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT6A/MT6A_1-1kW.i)
################################################################################
#
# Description: LOCA MT-6A Test with constant power level of 1.1 kW/m
#
#
# External files:
# axial peaking factor file MT6A_axial_peaking.csv
#
################################################################################
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
group_variables = 'disp_x disp_y'
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 6.1e-4
pellet_mesh_density = customize
ny_p = 100
nx_c = 4
nx_p = 12
pellet_outer_radius = .00413
ny_cu = 3
ny_c = 100
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.66
ny_cl = 3
clad_top_gap_height = 0.18613
clad_gap_width = 7.5e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 253
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[]
[AuxVariables]
[temp_initial]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 7.8e-6 # 2D grain radius
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[hmode]
order = CONSTANT
family = MONOMIAL
[]
[htype]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 150'
y = '1.1e3 1.1e3'
[]
[hmode_function]
type = PiecewiseConstant
x = '0 60 150'
y = '9 10 10'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = MT6A_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '0 150'
y = '1.72 1.72'
scale_factor = 1e6
[]
[temp_func]
type = ParsedFunction
expression = '-24.096*y*y+152.47*y+437.81'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors' # W/m
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz elastic_strain_yy strain_xx strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress' #plastic_strain_xx plastic_strain_yy plastic_strain_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
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
axial_power_profile = axial_peaking_factors
factor = 0.16e15 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = hmode
boundary = 2
[]
[htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = htype
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = clad
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
block = clad
execute_on = timestep_end
[]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
block = clad
execute_on = timestep_end
[]
[burst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
# TODO: Have StandardLWRFuelRodOutputs create this when the feature in issue #1054 is
# developed.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.66478
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00413 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0293 .9707 0 0 0 0' #TODO: Looks like it's set for 2.93%!
RPF = RPF
density = 10431 #95 %TD Assume TD = 10980 kg/cm3
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e11
normalize_penalty = true
model = frictionless
# model = coulomb
formulation = penalty
# friction_coefficient = 1.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.0 # Pa
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 9.15e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 310 # K
inlet_pressure = 1.72e6 # Pa
# inlet_massflux = massfluxfunc # kg/m^2-sec
rod_diameter = 0.00963 # m
rod_pitch = 1.275e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
heat_transfer_mode = hmode_function
heat_transfer_coefficient = 0.0000001 #W/m^2-K
# heat_transfer_mode = htc_function
htc_correlation_type = 1
flooding_time = 60.0
flooding_rate = 0.059182 # m/s
initial_temperature = 1175 # K
initial_power = 1.628 # kW/m
blockage_ratio = 0.0 #
fuel_stack_length = 3.66 # m
reflooding_model = 1
compute_enthalpy = false
[]
[]
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = temp_initial
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0 #95 %TD Assume TD = 10980 kg/cm3
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
# initial_grain_radius = 6.552e-6 # 2D grain radius 4.2e-6
grain_radius = grain_radius
gbs_model = true
burnup = burnup
# compute_swelling = true
transient_option = MICROCRACKING
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 10431 #95 %TD Assume TD = 10980 kg/cm3
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temp
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_standard_thermal_creep_end = 700.0
temperature_loca_creep_begin = 900.0
max_inelastic_increment = 1e-4
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
temperature = temp
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = temp_initial
eigenstrain_name = clad_thermal_eigenstrain
[]
[phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temp
fraction_beta_phase = fract_beta_phase
outputs = all
output_properties = 'failed burst_stress'
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0.0
end_time = 76.48
dtmax = 5
dtmin = 0.00001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 0.01
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
execute_on = timestep_end
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
fission_rate = fission_rate
variable = temp
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.66 # rod height
execute_on = timestep_end
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_creep_rate]
type = ElementExtremeValue
block = clad
value_type = max
variable = creep_rate_aux
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 40
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/RIA_CABRI_REP_Na4/analysis/REP_Na_4/RIA/REP_Na_4_RIA.i)
# REP Na 4 RIA
initial_fuel_density = 10476.35
[GlobalParams]
density = ${initial_fuel_density} # assumed TD = 10970
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
coord_type = RZ
type = AugmentedLagrangianContactProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
maximum_lagrangian_update_iterations = 200
acceptable_iterations = 30
acceptable_multiplier = 10
[]
[Mesh]
patch_size = 40
#patch_update_strategy = auto
#partitioner = centroid
#centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = REP_Na4.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_inner_wall = 5
clad_outer_wall = 2
clad_top = 3
clad_bottom = 1
pellet_exteriors = 8
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'clad'
[]
[fast_neutron_fluence]
block = 'clad'
[]
[grain_radius]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[fuel_cond]
order = CONSTANT
family = MONOMIAL
[]
[swelling_strain]
order = CONSTANT
family = MONOMIAL
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_plastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_plastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_axial_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[axial_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[clad_coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[clad_coolant_flux]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_hmode]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_htype]
order = CONSTANT
family = MONOMIAL
[]
[critical_heat_flux]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[plastic_strain_mag]
order = CONSTANT
family = MONOMIAL
block = 'clad'
[]
[SED]
order = CONSTANT
family = MONOMIAL
block = 'clad'
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = REPNa4_power_history_Full.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = REPNa4_axial_peaking_Full.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # inlet coolant pressure evolution
type = PiecewiseLinear
format = columns
scale_factor = 1.0
xy_data = '0 101325
8640 15499970
124675200 15499970
124718400 101325
125193600 101325
125193610 101325
125193650 500008
125193700 500008
125193900 500008
125194000 101325
125194100 101325'
[]
[temp_ramp] # inlet coolant temp evolution
type = PiecewiseLinear
format = columns
scale_factor = 1.0
xy_data = '0 293.15
8640 591
20476800 591
21859200 600
47692800 600
51840000 593
72144000 593
73440000 586
96940800 586
99360000 583
124675200.0 583
124761600.0 293.150
125193600.0 293.150
125193650.0 553.150
125193900.0 553.150
125194000.0 293.150
125194100.0 293.150'
[]
[burnup_GWd]
type = ParsedFunction
expression = bu*950
symbol_names = 'bu'
symbol_values = 'average_burnup'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz axial_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = 'clad'
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz plastic_strain_xx plastic_strain_yy plastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx
elastic_strain_yy elastic_strain_zz hoop_stress axial_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
a_upper = 0.5678974
a_lower = 0.0045
fuel_inner_radius = 0
fuel_outer_radius = 0.0040959
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0449 0.9551 0 0 0 0'
RPF = RPF
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_profile
factor = 3e13 #n/m2-s
block = 'clad'
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
block = 'clad'
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[fuel_conductance]
type = MaterialRealAux
property = thermal_conductivity
variable = fuel_cond
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[swelling_strain]
type = MaterialRealAux
property = volumetric_swelling_strain
variable = swelling_strain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[vonmises_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises_stress
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = axial_creep_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[hoop_plastic_strain]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = hoop_plastic_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_plastic_strain]
type = RankTwoAux
rank_two_tensor = plastic_strain
variable = axial_plastic_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[total_axial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_axial_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = 'clad'
[]
[axial_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = axial_elastic_strain
index_i = 1
index_j = 1
execute_on = timestep_end
block = 'clad'
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[plastic_strain_mag]
type = MaterialRealAux
property = effective_plastic_strain
variable = plastic_strain_mag
block = clad
execute_on = timestep_end
[]
[clad_coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = clad_coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[clad_coolant_flux]
type = MaterialRealAux
property = output_heat_flux
variable = clad_coolant_flux
boundary = 2
[]
[coolant_channel_hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = coolant_channel_hmode
boundary = 2
[]
[coolant_channel_htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = coolant_channel_htype
boundary = 2
[]
[critical_heat_flux]
type = MaterialRealAux
property = critical_heat_flux
variable = critical_heat_flux
boundary = 2
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[]
[ofract_total]
type = MaterialRealAux
property = current_oxygen_weight_frac_total
variable = oxywtfract_total
execute_on = timestep_end
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
property = oxygen_weight_frac_gained_total
variable = oxywtfgain_total
execute_on = timestep_end
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
property = fract_beta_phase
variable = fract_beta_phase
block = 'clad'
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 210 #10
penalty = 1e9
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.3
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 1e-6
al_frictional_force_tolerance = 5e-2
[]
[pellet_clad_mechanical_2]
primary = 5
secondary = 410
penalty = 1e9
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 1e-6
al_frictional_force_tolerance = 5e-2
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 0.1e-6 #2.0e-6
roughness_secondary = 0.1e-6 #0.5e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
emissivity_primary = 0.800 #Emissivity for fuel
emissivity_secondary = 0.325 #Emissivity for clad
refab_time = 125107200
refab_gas_types = He
refab_fractions = 1
contact_coef = 20 #10 default
[]
[]
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_temperature = 293.15
initial_pressure = 2.60e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior #plenumTemp
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
# extra_vector_tags = 'ref'
refab_time = 125107200
refab_pressure = 0.301e6
refab_temperature = 293.15
refab_volume = 2.0e-6
[]
[]
[]
[CoolantChannel]
# [convective_clad_surface_water] # apply convective boundary to clad outer surface
# boundary = '1 2 3'
# variable = temp
# inlet_temperature = temp_ramp # K
# inlet_pressure = pressure_ramp # Pa
# inlet_massflux = 3244.044104 # kg/m^2-sec
# rod_diameter = 0.00951 # m
# rod_pitch = 1.26e-2 # m
# coolant_material = 'water'
# compute_enthalpy = true
# oxide_thickness = oxide_thickness # coupled oxide_thickness
# number_axial_zone = 50
# []
#
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp # K
inlet_pressure = pressure_ramp # Pa
inlet_massflux = 3533 # kg/m^2-sec Based on flow rate provided and flow area and estimated density of 885.1 kg/m^3
flow_area = 8.74855e-5 #m^2
heated_diameter = 1.172526e-2 #m
hydraulic_diameter = 4.7e-3 #m
heated_perimeter = 2.984513e-2 #m
coolant_material = 'sodium'
compute_enthalpy = true
heat_transfer_mode = 0
oxide_thickness = oxide_thickness # coupled oxide_thickness
number_axial_zone = 50
rod_diameter = 0.0095 # m
htc_correlation_type = 2
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
#density = 10476.35
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.045
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
matpro_poissons_ratio = 1
matpro_youngs_modulus = 1
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
stress_free_temperature = 293.15
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
burnup_function = burnup
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.0 #0.0208
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = 'pin_geometry'
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
burnup_function = burnup
initial_fuel_density = 10476.35
total_densification = 0.00675
initial_porosity = 0.045
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
fission_rate = fission_rate
burnup_function = burnup
initial_porosity = 0.045
grain_radius_const = 5.0e-6
gbs_model = false
transient_option = MICROCRACKING_BURNUP
[]
[clad_density]
type = StrainAdjustedDensity
block = 'clad'
strain_free_density = 6550
[]
[clad_thermal]
type = ZryThermal
block = 'clad'
temperature = temp
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
temperature = temp
matpro_poissons_ratio = true
matpro_youngs_modulus = true
cold_work_factor = 0.5
fast_neutron_fluence = fast_neutron_fluence
block = 'clad'
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
#inelastic_models = 'clad_zrycreep clad_zryplasticity'
inelastic_models = 'clad_zryplasticity'
block = 'clad'
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 'clad'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
#creeprate_scale_factor = 1
model_irradiation_creep = 1
model_primary_creep = 1
model_thermal_creep = 1
max_inelastic_increment = 0.0001
creeprate_scale_factor = 0
enable = 0
[]
[clad_zryplasticity]
type = ZryPlasticityUpdate
block = 'clad'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.5
plasticity_model_type = MATPRO
zircaloy_alloy_type = 4
max_inelastic_increment = 0.0001
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 'clad'
temperature = temp
stress_free_temperature = 293.15
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 'clad'
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
compute = 0
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.00417789
clad_outer_radius = 0.00475615
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
oxygen_weight_fraction_initial = 0.0012
[]
[phase]
type = ZrPhase
block = 'clad'
numerical_method = 2
temperature = temp
[]
[StrainEnergyDensity]
type = StrainEnergyDensity
block = 'clad'
incremental = 1
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = 3200 # The maximum permissible iterative value for the variable.
min_value = 200 # The minimum permissible iterative value for the variable.
variable = temp # The name of the variable that this damper operates on
[]
[contact_slip]
type = ContactSlipDamper
primary = 5
secondary = 10
min_damping_factor = 0.05
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'contact'
contact_line_search_allowed_lambda_cuts = 0
contact_line_search_ltol = 0.5
verbose = true
l_max_its = 100
l_tol = 1e-3
nl_max_its = 40
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = 0
end_time = 125194100 #125193600 #125194100 is the end time for the RIA
dtmax = 10
dtmin = 1e-7
[TimeStepper]
type = IterationAdaptiveDT
dt = 10
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = power_profile
max_function_change = 5e5
force_step_every_function_point = true
timestep_limiting_postprocessor = material_timestep
time_t = '125193610 125193620 125193630 125193640 125193650 125193660 125193670 125193680'
time_dt = '10 10 10 10 10 10 10 10'
[]
[Quadrature]
order = FIFTH #SEVENTH
side_order = SEVENTH #Comment out if order = SEVENTH
[]
[]
[Postprocessors]
# [ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
# type = SideAverageValue
# boundary = 9 #For RIA the node number is ##***8479***##
# variable = temp
# execute_on = 'initial linear'
# []
[ave_temp_interior]
type = NodalVariableValue
variable = temp
nodeid = 8479
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_fuel_temp]
type = NodalExtremeValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = 'clad'
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = 'clad'
value_type = min
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
outputs = exodus
[]
[gas_volume] # gas volume
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[1_rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
[]
[3_burnup_GWd]
type = FunctionValuePostprocessor
function = burnup_GWd
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[vonmises_stress_fuel]
type = ElementAverageValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = vonmises_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = 'clad'
variable = vonmises_stress
[]
[z_average_RPF]
type = ElementAverageValue
block = 'pellet_type_1 pellet_type_2 pellet_type_3'
variable = RPF
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = 'clad'
[]
## Nodal values
[FCT] #fuel centerline temperature
type = NodalVariableValue
variable = temp
nodeid = 3866 #(0, 0.303375, 0)
[]
[FST] #fuel surface temperature
type = NodalVariableValue
variable = temp
nodeid = 3823 #(0.0040959, 0.303375, 0)
[]
[CIST] #clad inner surface temperature
type = NodalVariableValue
variable = temp
nodeid = 9557 #(0.0041779, 0.305106, 0)
[]
[COST] #clad outer surface temperature
type = NodalVariableValue
variable = temp
nodeid = 9547 #(0.00475615, 0.305106, 0)
[]
[gap]
type = NodalVariableValue
variable = penetration
nodeid = 3823 #(0.0040959, 0.303375, 0)
use_displaced_mesh = true
[]
#######################################
[qpoint_penetration] #FOCE
type = ElementalVariableValue
variable = qpoint_penetration
elementid = 1200
use_displaced_mesh = 1
[]
[penetration] #FOCN
type = NodalVariableValue
variable = penetration
nodeid = 3823
use_displaced_mesh = 1
[]
[contact_pressure] #FOCN
type = NodalVariableValue
variable = contact_pressure
nodeid = 3823
use_displaced_mesh = 1
[]
[gap_cond] #FOCE
type = ElementalVariableValue
variable = gap_cond
elementid = 1200
use_displaced_mesh = 1
[]
[creep_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_creep_strain
elementid = 2981
use_displaced_mesh = 1
[]
[elastic_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_elastic_strain
elementid = 2981
use_displaced_mesh = 1
[]
[plastic_hoop_strain] #COCE
type = ElementalVariableValue
variable = hoop_plastic_strain
elementid = 2981
use_displaced_mesh = 1
[]
[total_hoop_strain] #COCE
type = ElementalVariableValue
variable = total_hoop_strain
elementid = 2981
use_displaced_mesh = 1
[]
[clad_hoop_stress] #COCE
type = ElementalVariableValue
variable = hoop_stress
elementid = 2981
use_displaced_mesh = 1
[]
[clad_axial_elongation] #COTN
type = NodalVariableValue
variable = disp_y
nodeid = 10755
use_displaced_mesh = 1
[]
[clad_oxide_thickness] #COCE
type = ElementalVariableValue
variable = oxide_thickness
elementid = 2981
use_displaced_mesh = 1
[]
[clad_coolant_htc] #COCE
type = ElementalVariableValue
variable = clad_coolant_htc
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_temp] #COCE
type = ElementalVariableValue
variable = coolant_temp
elementid = 2981
use_displaced_mesh = 1
[]
[clad_coolant_flux] #COCE
type = ElementalVariableValue
variable = clad_coolant_flux
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_channel_hmode] #COCE
type = ElementalVariableValue
variable = coolant_channel_hmode
elementid = 2981
use_displaced_mesh = 1
[]
[coolant_channel_htype] #COCE
type = ElementalVariableValue
variable = coolant_channel_htype
elementid = 2981
use_displaced_mesh = 1
[]
[critical_heat_flux] #COCE
type = ElementalVariableValue
variable = critical_heat_flux
elementid = 2981
use_displaced_mesh = 1
[]
[fuel_centerline_temp] #FICN
type = NodalVariableValue
variable = temp
nodeid = 3866
[]
[fuel_surface_temp] #FOCN
type = NodalVariableValue
variable = temp
nodeid = 3823
[]
[clad_inner_surface_temp] #CICN
type = NodalVariableValue
variable = temp
nodeid = 9557
[]
[clad_outer_surface_temp] #COCN
type = NodalVariableValue
variable = temp
nodeid = 9547
[]
[fuel_axial_elongation] #FOTN
type = NodalVariableValue
variable = disp_y
nodeid = 7739
[]
[clad_radial_elongation] #COCN
type = NodalVariableValue
variable = disp_x
nodeid = 9547
[]
[fuel_radial_elongation] #FOCN
type = NodalVariableValue
variable = disp_x
nodeid = 3823
[]
[SED_PPN_O] #COCE
type = ElementalVariableValue
variable = SED
elementid = 2981
use_displaced_mesh = 1
[]
[SED_PPN_I] #CICE
type = ElementalVariableValue
variable = SED
elementid = 2984
use_displaced_mesh = 1
[]
[zz_OFract_PPN_O] #COCE
type = ElementalVariableValue
variable = oxywtfract_total
elementid = 2981
use_displaced_mesh = 1
[]
[zz_OGain_PPN_O] #COCE
type = ElementalVariableValue
variable = oxywtfgain_total
elementid = 2981
use_displaced_mesh = 1
[]
#######################################
[max_clad_SED]
type = ElementExtremeValue
block = 'clad'
variable = SED
value_type = max
[]
#Post processor to calculate radial average enthalpy. This postprocessor isnt available yet in BISON
[z_RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.3
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = z_RAE
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_diameter'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_pellet_diameter'
[]
#Location of peak power node at appoximately 0.3 m in mesh
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = 'outfile_radial_temp'
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 'pellet_type_1 pellet_type_2 pellet_type_3'
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
csv = true
#exodus = true
color = false
[outfile_clad_diameter]
type = CSV
sync_times = '125194100'
sync_only = true
[]
[outfile_pellet_diameter]
type = CSV
sync_times = '125194100'
sync_only = true
[]
[outfile_radial_temp]
type = CSV
end_time = -100000
[]
[console]
type = Console
output_linear = true
max_rows = 10
[]
[checkpoint]
type = Checkpoint
num_files = 2
file_base = recover_files
[]
[chkfile]
type = CSV
show = 'ave_temp_interior fis_gas_released FCT average_burnup peak_RAE'
execute_on = 'FINAL'
[]
[exodus]
type = Exodus
time_step_interval = 4
end_time = 125193700
[]
[exodus_RIA]
type = Exodus
time_step_interval = 3
start_time = 125193695
[]
[checkpoint_RIA]
type = Checkpoint
file_base = recover_files_RIA
sync_times = '124761600 125107200 125193600 125193650 125193700 125193700.06 125193700.07 125193700.08 125193700.09 125193700.10 125193700.20 125193700.30 125193700.40 125193700.50 125193700.60 125193700.70 125193700.80 125193700.90 125193701.00 125193701.25 125193701.50 125193701.75 125193702.00 125193702.25 125193702.50 125193702.75 125193703.00 125193704.00 125193705.00'
sync_only = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
show_material_props = true
[]
(test/tests/solid_mechanics/uo2_eigenstrains/uo2_relocation/relo_recov_fuel_rod.i)
#
# Simple fuel rod example for relocation recovery.
#
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 1
nx_p = 1
nx_c = 1
ny_cu = 1
ny_c = 1
ny_cl = 1
pellet_quantity = 1
pellet_height = 0.01
pellet_outer_radius = 4.1e-3
clad_gap_width = 160.0e-6
clad_thickness = 0.56e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.0e-2
elem_type = QUAD8
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 20
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[layered_average_contact_pressure]
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_rr]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_rr]
order = CONSTANT
family = MONOMIAL
[]
[stress_rr]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 6.327640e+07 6.33628e7 6.34492e7 1.0e08'
y = '0 2.5e4 2.5e4 0 2.5e4 2.5e4'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
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]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[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
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
RPF = RPF
fuel_volume_ratio = 1
fuel_pin_geometry = pin_geometry
[]
[]
[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
variable = grain_radius
temperature = temp
execute_on = linear
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[layered_average_contact_pressure]
type = SpatialUserObjectAux
block = pellet
variable = layered_average_contact_pressure
execute_on = nonlinear
user_object = layered_average_contact_pressure
[]
[gas_swell]
type = MaterialRealAux
block = pellet
variable = gas_swell
property = gas_swelling
execute_on = nonlinear
[]
[volumetric_strain]
type = RankTwoScalarAux
block = pellet
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = nonlinear
[]
[elastic_strain_rr]
type = RankTwoAux
variable = elastic_strain_rr
rank_two_tensor = elastic_strain
index_i = 0
index_j = 0
execute_on = nonlinear
[]
[total_strain_rr]
type = RankTwoAux
variable = total_strain_rr
rank_two_tensor = total_strain
index_i = 0
index_j = 0
execute_on = nonlinear
[]
[stress_rr]
type = RankTwoAux
variable = stress_rr
rank_two_tensor = stress
index_i = 0
index_j = 0
execute_on = nonlinear
[]
[elastic_strain_yy]
type = RankTwoAux
variable = elastic_strain_yy
rank_two_tensor = elastic_strain
index_i = 2
index_j = 2
execute_on = nonlinear
[]
[total_strain_yy]
type = RankTwoAux
variable = total_strain_yy
rank_two_tensor = total_strain
index_i = 2
index_j = 2
execute_on = nonlinear
[]
[stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 2
index_j = 2
execute_on = nonlinear
[]
[elastic_strain_zz]
type = RankTwoAux
variable = elastic_strain_zz
rank_two_tensor = elastic_strain
index_i = 1
index_j = 1
execute_on = nonlinear
[]
[total_strain_zz]
type = RankTwoAux
variable = total_strain_zz
rank_two_tensor = total_strain
index_i = 1
index_j = 1
execute_on = nonlinear
[]
[stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_i = 1
index_j = 1
execute_on = nonlinear
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
block = pellet
execute_on = nonlinear
[]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
block = clad
execute_on = nonlinear
[]
[creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
block = clad
execute_on = nonlinear
[]
[creep_strain_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
block = clad
execute_on = nonlinear
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.5e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[elastic_stress]
type = ComputeSmearedCrackingStress
block = pellet
cracking_stress = 1.68e8
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temp
fission_rate = fission_rate
initial_grain_radius = 10e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 1e12
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
model_relocation_recovery = true
max_relocation_recovery_fraction = 0.5
relocation_scaling_factor = 1
volumetric_swelling_increment = vol_swell_increment
layered_average_contact_pressure = layered_average_contact_pressure
outputs = all
output_properties = 'relocation_strain recovered_relocation_strain'
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup_function = burnup
initial_fuel_density = ${initial_fuel_density}
eigenstrain_name = fuel_volumetric_strain
[]
[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
zircaloy_material_type = stress_relief_annealed
[]
[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
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[]
[]
[UserObjects]
[layered_average_contact_pressure]
type = LayeredSideAverage
variable = contact_pressure
direction = y
num_layers = 1
execute_on = timestep_end
boundary = 10
[]
# [avg_gap]
# type = LayeredAverage
# block = pellet
# variable= penetration
# direction = y
# num_layers = 1
# execute_on = timestep_end
# []
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
verbose = false
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 1.0e8
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
time_t = '0 1.0e4 6.327640e+07 6.33628e7 6.34492e7 1.0e08'
time_dt = '2e2 1e3 1e3 1e3 1e3 1e3'
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[reloc_strain]
type = ElementAverageValue
variable = relocation_strain
block = pellet
execute_on = timestep_end
[]
[contact_pressure]
type = ElementAverageValue
variable = contact_pressure
block = pellet
execute_on = nonlinear
[]
[average_contact_pressure]
type = ElementAverageValue
variable = layered_average_contact_pressure
block = pellet
execute_on = timestep_end
[]
[clad_crp_zz]
type = SideAverageValue
boundary = 5
variable = creep_strain_zz
execute_on = timestep_end
[]
[clad_crp_xx]
type = SideAverageValue
boundary = 5
variable = creep_strain_xx
execute_on = timestep_end
[]
[clad_creep_increment]
type = SideAverageIncrementTensorComponent
boundary = 5
variable = creep_strain_zz
execute_on = timestep_end
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = pellet
execute_on = timestep_end
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
execute_on = timestep_end
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
execute_on = timestep_end
[]
[elastic_strain_rr]
type = ElementAverageValue
variable = elastic_strain_rr
block = pellet
execute_on = nonlinear
[]
[total_strain_rr]
type = ElementAverageValue
variable = total_strain_rr
block = pellet
execute_on = nonlinear
[]
[stress_rr]
type = ElementAverageValue
variable = stress_rr
block = pellet
execute_on = timestep_end
[]
[elastic_strain_yy]
type = ElementAverageValue
variable = elastic_strain_yy
block = pellet
execute_on = nonlinear
[]
[total_strain_yy]
type = ElementAverageValue
variable = total_strain_yy
block = pellet
execute_on = nonlinear
[]
[stress_yy]
type = ElementAverageValue
variable = stress_yy
block = pellet
execute_on = timestep_end
[]
[elastic_strain_zz]
type = ElementAverageValue
variable = elastic_strain_zz
block = pellet
execute_on = nonlinear
[]
[total_strain_zz]
type = ElementAverageValue
variable = total_strain_zz
block = pellet
execute_on = timestep_end
[]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
block = pellet
execute_on = timestep_end
[]
[thermal_strain_rr]
type = DifferencePostprocessor
value1 = total_strain_rr
value2 = elastic_strain_rr
execute_on = timestep_end
[]
[thermal_strain_yy]
type = DifferencePostprocessor
value1 = total_strain_yy
value2 = elastic_strain_yy
execute_on = timestep_end
[]
[thermal_strain_zz]
type = DifferencePostprocessor
value1 = total_strain_zz
value2 = elastic_strain_zz
execute_on = timestep_end
[]
[vol_swell_increment]
type = SideAverageIncrementTensorComponent
boundary = 10
variable = volumetric_swelling_strain
execute_on = nonlinear
[]
[recov_strain]
type = ElementAverageValue
variable = recovered_relocation_strain
block = pellet
execute_on = timestep_end
[]
[]
# [VectorPostprocessors]
# [clad]
# type = NodalValueSampler
# variable = disp_x
# boundary = 2
# sort_by = y
# outputs = 'outfile_clad_radial_displacement'
# []
# [pellet]
# type = NodalValueSampler
# variable = disp_x
# boundary = 10
# sort_by = y
# outputs = 'outfile_fuel_radial_displacement'
# []
# []
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'reloc_strain recov_strain'
execute_on = 'FINAL'
[]
# [outfile_clad_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
# [outfile_fuel_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
[]
(examples/TRISO/accident_simulation/triso2D_accident_mortar.i)
# This example is 2D-RZ analysis of a TRISO fuel particle. Fully coupled
# heat transfer and solid mechanics, plus diffusion of the fission product
# species cesium (Cs) are simulated. The mesh includes contact surfaces
# between the buffer and IPyC layers to facilitate a gap opening between
# these layers. These surfaces are initially in mechanical contact but
# are assumed to have no strength in tension. A coarse mesh is used to
# provide a short run time.
# The calculation simulates fuel-life in three steps. The first step is an
# irradiation period, where constant power and a fixed particle surface
# temperature (1500 K) are assumed over a lifetime of 76 Ms (2.4 yrs).
# For the second step, fuel removal and storage are simulated by setting
# the reactor power and Cs source terms to zero, reducing the particle
# surface temperature to ambient (300 K), and then holding it
# for 100 days. A third and final step simulates accident
# behavior by increasing the particle surface temperature from ambient
# to 2073 K over 2 hrs, and then holding it at this elevated temperature
# for an additional 200 hrs. At the particle outer boundary, the Cs
# concentration is held at zero and the pressure at ambient during the
# entire simulation. The particle is assumed to be stress-free at an
# initial temperature of 1500 K.
#
# Details about this simulation are given in Section 4 of the following
# article: J. D. Hales, R. L. Williamson, S. R. Novascone, D. M. Perez,
# B. W. Spencer and G. Pastore, "Multidimensional multiphysics simulation
# of TRISO particle fuel", Journal of Nuclear Materials, Vol. 443, p. 531,
# 2013.
# This is a version using a thermomechanical mortar approach.
initial_fuel_density = 11000.0
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
flux_conversion_factor = 0.85
[]
[Mesh]
coord_type = RZ
[file]
type = FileMeshGenerator
file = triso2Dmed.e
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp conc'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 1500.0
[]
[conc]
initial_condition = 0.0
[]
[]
[AuxVariables]
[fission_rate]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[fluence]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[creep_xx]
order = CONSTANT
family = MONOMIAL
[]
[creep_yy]
order = CONSTANT
family = MONOMIAL
[]
[creep_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 76e6 76.001e6'
y = '1 1 0'
[]
[temp_bc]
type = PiecewiseLinear
x = '0 76e6 76.001e6 84.641e6 84.6482e6'
y = '1500 1500 300 300 2073'
[]
[k_function]
type = PiecewiseLinear
x = '0 200e6'
y = '4e-37 4e-37'
[]
[d1_function]
type = ParsedFunction
expression = 'exp(t/4.5e25)'
[]
[d_gap]
type = PiecewiseLinear
x = '1500 2100'
y = '1e-14 1e-12'
[]
[integral_flux_error]
type = ParsedFunction
symbol_names = 'buffer_integral_flux IPyC_integral_flux'
symbol_values = 'buffer_integral_flux IPyC_integral_flux'
expression = 'IPyC_integral_flux + buffer_integral_flux'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx hydrostatic_stress'
strain = FINITE
incremental = true
add_variables = false
[default]
block = 'fuel buffer IPyC OPyC'
eigenstrain_names = 'thermal_strain swelling_strain'
extra_vector_tags = 'ref'
[]
[SiC]
block = 'SiC'
eigenstrain_names = 'thermal_strain'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = 'fuel buffer IPyC SiC OPyC'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = 'fuel buffer IPyC SiC OPyC'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[mass_ie]
type = TimeDerivative
variable = conc
extra_vector_tags = 'ref'
block = 'fuel buffer IPyC SiC OPyC'
[]
[mass]
type = ArrheniusDiffusion
variable = conc
extra_vector_tags = 'ref'
block = 'fuel buffer IPyC SiC OPyC'
[]
[mass_source]
type = BodyForce
variable = conc
function = power_history
value = 1.22e-5 # units of moles/m**3-s
block = fuel
extra_vector_tags = 'ref'
[]
[mass_decay]
type = Decay
variable = conc
radioactive_decay_constant = 7.297e-10 # units:(1/sec) The constant for Cesium
block = 'fuel buffer IPyC SiC OPyC'
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = fuel
fission_rate_function = power_history
value = 3.89e19
execute_on = timestep_begin
[]
[fluence]
type = MaterialRealAux
property = fast_neutron_fluence
variable = fluence
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
execute_on = timestep_begin
density = ${initial_fuel_density}
[]
[creep_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_xx
index_i = 0
index_j = 0
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[creep_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_yy
index_i = 1
index_j = 1
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[creep_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_zz
index_i = 2
index_j = 2
block = 'buffer IPyC SiC OPyC'
execute_on = timestep_end
[]
[]
[ThermalContactMortar]
[thermal]
secondary_variable = temp
primary_boundary = 15
secondary_boundary = 17
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
gap_geometry_type = CYLINDER
min_gap = 1e-7
max_gap = 50e-6
roughness_coef = 0.0
correct_edge_dropping = true
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 15
secondary = 17
model = frictionless
formulation = mortar
c_normal = 1.0e8
correct_edge_dropping = true
[]
[]
[ThermalContact]
[cesium_contact]
type = GapHeatTransfer
variable = conc
primary = 15
secondary = 17
tangential_tolerance = 1e-6
gap_conductivity_function = d_gap
gap_conductivity_function_variable = temp
appended_property_name = _conc
emissivity_primary = 0
emissivity_secondary = 0
quadrature = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
extra_vector_tags = 'ref'
[]
[no_disp_y]
type = DirichletBC
variable = disp_y
boundary = yzero
value = 0.0
extra_vector_tags = 'ref'
[]
# fix temperature on free surface
[freesurf_temp]
type = FunctionDirichletBC
variable = temp
boundary = exterior
function = temp_bc
extra_vector_tags = 'ref'
[]
# fix concentration on free surface
[freesurf_conc]
type = DirichletBC
variable = conc
boundary = exterior
value = 0.0
extra_vector_tags = 'ref'
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = BufferGapVol
initial_pressure = 0
startup_time = 1.0e4
R = 8.3145
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = volumeGas # coupling to post processor to get gas volume
material_input = 'fis_gas_released co_production' # coupling to post processor to get fission gas added, co added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 5e17
[]
[fission_gas_release] # Sifgrs fission gas release mode
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius_const = 5.0e-6
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
initial_porosity = 0.0
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = fuel
temperature = temp
burnup = burnup
eigenstrain_name = 'swelling_strain'
initial_fuel_density = ${initial_fuel_density}
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = 'fuel'
[]
[fuel_elasticity]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.2e11
poissons_ratio = .345
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density} # kg/m^3
[]
[fuel_conc]
type = ArrheniusDiffusionCoef
block = fuel
d1 = 5.6e-8 # m^2/s
q1 = 209.0e+3 # J/mol
d2 = 5.2e-4 # m^2/s
q2 = 362.0e+3 # J/mol
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[buffer_eigenstrain]
type = PyCIrradiationEigenstrain
block = buffer
pyc_type = buffer
eigenstrain_name = 'swelling_strain'
[]
[buffer_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = buffer
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[buffer_elasticity]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e10
poissons_ratio = .23
[]
[buffer_stress]
type = PyCCreep
block = buffer
temperature = temp
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000.0 #kg/m^3
block = buffer
[]
[buffer_conc]
type = ArrheniusDiffusionCoef
block = buffer
d1 = 1.0e-12 # m^2/s
q1 = 0.0
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC buffer'
[]
[IPyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = IPyC
pyc_type = dense
eigenstrain_name = 'swelling_strain'
[]
[IPyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = IPyC
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[IPyC_elasticity]
type = ComputeIsotropicElasticityTensor
block = IPyC
youngs_modulus = 4.74e10
poissons_ratio = .23
[]
[IPyC_disp]
type = PyCCreep
block = 'IPyC OPyC'
temperature = temp
[]
[IPyC_temp]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[IPyC_den]
type = StrainAdjustedDensity
block = 'IPyC OPyC'
strain_free_density = 1900.0
[]
[IPyC_conc]
type = ArrheniusDiffusionCoef
block = IPyC
d1 = 6.3e-8
q1 = 222.0e+3
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[SiC_elasticity]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.4e11
poissons_ratio = .13
[]
[SiC_creep]
type = MonolithicSiCCreepUpdate
block = SiC
temperature = temp
k_function = k_function
[]
[SiC_stress]
type = ComputeMultipleInelasticStress
block = SiC
tangent_operator = elastic
inelastic_models = 'SiC_creep'
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3180.0 # kg/m^3
block = SiC
[]
[SiC_conc]
type = ArrheniusDiffusionCoef
block = SiC
d1 = 5.5e-14 # m^2/s
d1_function = d1_function
d1_function_variable = fluence
q1 = 125.0e+3 # J/mol
d2 = 1.6e-2 # m^2/s
q2 = 514.0e+3 # J/mol
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[OPyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = OPyC
pyc_type = dense
eigenstrain_name = 'swelling_strain'
[]
[OPyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = OPyC
thermal_expansion_coeff = 5.65e-6
stress_free_temperature = 1500.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[OPyC_elasticity]
type = ComputeIsotropicElasticityTensor
block = OPyC
youngs_modulus = 4.74e10
poissons_ratio = .23
[]
[OPyC_conc]
type = ArrheniusDiffusionCoef
block = OPyC
d1 = 6.3e-8 # m^2/s
q1 = 222.0e+3 # J/mol
d2 = 0.0
q2 = 0.0
gas_constant = 8.3143 # J/K-mol
temperature = temp
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-14'
snesmf_reuse_base = false
line_search = 'none'
nl_rel_tol = 5e-4
nl_abs_tol = 1e-10
nl_max_its = 20
l_max_its = 8
start_time = 0.0
end_time = 85.3682e6
dt = 100
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 10
growth_factor = 1.5
linear_iteration_ratio = 100
time_t = '0 76e6 76.001e6 84.641e6 84.6482e6'
time_dt = '20 20 20 20 20'
[]
[Predictor]
type = SimplePredictor
scale = 0.5
skip_times_old = '0 76e6 76.001e6 84.641e6 84.6482e6'
[]
[]
[Outputs]
perf_graph = true
exodus = true
[console]
type = Console
max_rows = 25
[]
[csv]
type = CSV
sync_times = '100 6308007 75696087'
sync_only = true
[]
[]
[Postprocessors]
[Cs_release]
type = SideIntegralMassFlux
variable = conc
boundary = exterior
execute_on = timestep_end
[]
[dt]
type = TimestepSize
execute_on = timestep_end
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
execute_on = 'initial timestep_end'
[]
[volumeFuel]
type = InternalVolume
boundary = fuel
execute_on = 'initial timestep_end'
[]
[volumeGas]
type = InternalVolume
boundary = BufferGapVol
# ro = 3.125e-4
# ri = 2.125e-4
# vb = 4/3*pi*(ro^3-ri^3) = 8.76e-11
# buffer density = 1000
# PyC density = 1900
# fill ratio = 10/19
# vb*10/19 = 4.6e-11
# Must remove 4.6e-11 m^3 from the volume
addition = -4.6e-11
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = BufferGapVol
execute_on = 'initial timestep_end'
[]
[ave_temp_interior]
type = SideAverageValue
boundary = BufferGapVol
variable = temp
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[avg_surface_temp]
type = SideAverageValue
variable = temp
boundary = exterior
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
execute_on = 'initial linear nonlinear timestep_begin timestep_end'
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[buffer_avg_conc]
type = SideAverageValue
variable = conc
boundary = 17
[]
[IPyC_avg_conc]
type = SideAverageValue
variable = conc
boundary = 15
[]
[buffer_integral_flux]
type = SideIntegralMassFlux
variable = conc
boundary = 17
[]
[IPyC_integral_flux]
type = SideIntegralMassFlux
variable = conc
boundary = 15
[]
[integral_flux_error]
type = FunctionValuePostprocessor
function = integral_flux_error
[]
[integral_Cs_release]
type = TimeIntegratedPostprocessor
value = Cs_release
[]
[Cs_production]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 1.22e-5 # units of moles/m**3-s
[]
[time_integral_Cs_production]
type = TimeIntegratedPostprocessor
value = Cs_production
[]
[volumeFuel_initial]
type = InternalVolume
boundary = fuel
execute_on = initial
[]
[integral_Cs_production]
type = ParsedPostprocessor
pp_names = 'time_integral_Cs_production volumeFuel_initial'
expression = 'time_integral_Cs_production * volumeFuel_initial'
[]
[Cs_release_fraction]
type = ParsedPostprocessor
pp_names = 'integral_Cs_release integral_Cs_production'
expression = 'integral_Cs_release / integral_Cs_production'
[]
[]
[VectorPostprocessors]
[temperaturevpp]
type = SideValueSampler
boundary = 11
variable = temp
sort_by = x
outputs = 'csv'
use_displaced_mesh = true
[]
[]
(test/tests/sifgrs/uo2/ad_percolation.i)
# This test is to verify that the optional check for a path to a free surface for gas release works correctly.
# When the optional percolation AuxVariable is supplied to Sifgrs, gas release is not allowed unless
# that variable is > 0.5 locally. The PercolationUserObject checks whether each position is connected
# to a free surface and sets the AuxVariable accordingly.
# In this test, the gas released should be nearly the same as the sifgrs_second_stage test.
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[free1]
type = SideSetsAroundSubdomainGenerator
new_boundary = free1
normal = '1 0 0'
block = 1
input = mesh
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1400'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
initial_condition = 1400
[]
[]
[AuxVariables]
[fission_rate]
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
# percolation AuxVariables
[open_coverage]
order = CONSTANT
family = MONOMIAL
[]
[open_threshold]
order = CONSTANT
family = MONOMIAL
[]
[open]
order = CONSTANT
family = MONOMIAL
[]
[cluster]
order = CONSTANT
family = MONOMIAL
[]
[percolated]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[frcvrg]
type = ADMaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = 'initial linear'
[]
# percolation auxkernels
[open_coverage]
type = ADMaterialRealAux
variable = open_coverage
property = GBCoverage
[]
[open_threshold]
type = ADMaterialRealAux
variable = open_threshold
property = sat_coverage
[]
[open]
type = ParsedAux
variable = open
coupled_variables = 'open_coverage open_threshold'
expression = 'open_coverage-open_threshold'
[]
[cluster]
type = FeatureFloodCountAux
variable = cluster
execute_on = 'timestep_begin'
field_display = UNIQUE_REGION
flood_counter = percolate
[]
[percolated]
type = PercolationAux
variable = percolated
execute_on = 'timestep_begin'
percolation = percolate
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 1
temperature = T
fission_rate = fission_rate
percolation_to_surface = percolated
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
end_time = 5e7
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 1
[]
[]
[UserObjects]
[percolate]
type = PercolationUserObject
execute_on = 'timestep_begin'
boundaries = 'free1'
variable = open
threshold = 0.0
[]
[]
[Outputs]
[out]
type = Exodus
[]
[]
(assessment/MOX/JOYO/MK-I/analysis/MK-I_75MW_master_old_bubble_gb_lim.i)
initial_fuel_density = 10836.8
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.065
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.6
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000100
clad_thickness = 0.00035
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.599
elem_type = QUAD8
nx_c = 4
ny_c = 200
nx_p = 20
ny_p = 200
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = '0 70000 25000000'
y = '0 38974.7 38974.7'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 70000 25000000'
y = '0 1.9e+19 1.9e+19'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0 0.071 0.146 0.221 0.296 0.37 0.443 0.566'
y = '0 25000000'
z = '0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672 0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = '0 70000 25000000'
y = '0 32000 32000'
[]
[clad_surface_temp]
type = PiecewiseBilinear
x = '0 0.071 0.146 0.221 0.296 0.37 0.443 0.566'
y = '0 25000000'
z = '295 295 295 295 295 295 295 295 593.58 606.36 619.13 630.26 640.87 651.76 662.67 673.67'
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[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
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.065
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp_clad_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_surface_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 101325
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 300000
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10836.8
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
diff_coeff_option = TURNBULL_D1_4D2_4D3
fission_rate = fission_rate
grain_radius_const = 8.01e-6 #I'm keeping the grain radius const because the grain growth in MOX is probably different due to high Temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-5
fixed_point_rel_tol = 1e-5
fixed_point_max_its = 1
l_max_its = 70
l_tol = 8e-3
nl_max_its = 70
nl_rel_tol = 1e-5
nl_abs_tol = 1e-5
start_time = 0
n_startup_steps = 1
end_time = 25000000
dtmax = 1e6
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 5000
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.6 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = MK-I_75MW_sub_old_bubble_gb_lim.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'temp disp_x disp_y'
[]
(examples/2D-RZ_rodlet_10pellets/fuel_pin_geometry/fuelpingeo.i)
# Model is of a smeared pellet fuel rod (pellet_type_1), using the user object fuel pin geometry.
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
# Import mesh file
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ../smeared.e
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
# Define dependent variables and initial conditions
[temp]
initial_condition = 580.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
# Define functions to control power and boundary conditions
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ../powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = ../peakingfactors12.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[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]
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1 # fission rate applied to the fuel (block 2) only
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = 'pin_geometry'
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[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
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
quadrature = true
contact_pressure = contact_pressure
[]
[]
[BCs]
# Define boundary conditions
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor] # isotropic elasticity tensor for UO2
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress] # elastic stress for UO2 (used instead of creep)
type = ComputeFiniteStrainElasticStress
block = pellet_type_1
[]
[fuel_thermal_expansion] # thermal expansion strain for UO2
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] # relocation strain measure for UO2
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = 'pin_geometry'
burnup_relocation_stop = 0.024
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling] # free expansion strains (swelling and densification) for UO2 (BISON kernel)
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
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal] # general thermal property input for clad
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor] # isotropic elasticity tensor for Zry cladding
type = ZryElasticityTensor
block = clad
[]
[clad_stress] # stress update class to govern the return mapping algorithm for creep
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep] # creep for zircaloy cladding
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
zircaloy_material_type = stress_relief_annealed
[]
[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
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
execute_on = timestep_end
[]
#Stress Measures
[center_vonMises_fuel]
type = ElementalVariableValue
elementid = 176 # mesh dependent (contains pt. 0.0041, 0.0546333)
variable = vonmises_stress
execute_on = timestep_end
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet_type_1
execute_on = timestep_end
[]
[center_vonMises_clad_inner]
type = ElementalVariableValue
elementid = 429 # mesh dependent (contains pt. 0.00418, 0.0556267)
variable = vonmises_stress
execute_on = timestep_end
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
execute_on = timestep_end
[]
# Radial Strain
[center_strain_rr_fuel]
type = ElementalVariableValue
elementid = 176 # mesh dependent (contains pt. 0.0041, 0.0546333)
variable = radial_strain
execute_on = timestep_end
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet_type_1
execute_on = timestep_end
[]
[center_strain_rr_clad_inner]
type = ElementalVariableValue
elementid = 429 # mesh dependent (contains pt. 0.00418, 0.0556267)
variable = radial_strain
execute_on = timestep_end
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
execute_on = timestep_end
[]
[center_creep_strain_clad_inner]
type = ElementalVariableValue
elementid = 429 # mesh dependent (contains pt. 0.00418, 0.0556267)
variable = effective_creep_strain
execute_on = timestep_end
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
# Contact quantities
[center_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 584 # mesh dependent, at (0.0041, 0.0546333)
execute_on = timestep_end
[]
[center_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 584 # mesh dependent, at (0.0041, 0.0546333)
execute_on = timestep_end
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
[VectorPostprocessors]
[clad]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
execute_on = timestep_end
[]
[pellet]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
execute_on = timestep_end
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(test/tests/sifgrs/uo2/ad_athermal_release.i)
# This is a test for the athermal release capability included in the Sifgrs fission gas behavior model.
# The model of B.J. Lewis (JNM 148, 28, 1987) is adopted for calculating the contribution to fission gas
# release (FGR) arising from the surface-fission release mechanisms (recoil and knockout).
# Since athermal release depends on the total pellet surface area (geometrical surface + cracked surface),
# an estimation of the number and length of cracks for each pellet is introduced, based on concepts from
# M. Oguma (NED 76, 35, 1983) and D.R. Olander (Fundamental aspects of nuclear reactor fuel elements,
# Berkeley, 1976). For this purpose, the subprograms PelletIdAux and PelletBrittleZone are employed.
# The athermal release model can be activated by specifying ath_model = true. It is also necessary to
# specify the name of the linear power function (see below).
# A single pellet - constant power problem is considered for this test.
# In order to isolate the athermal release, the concurrent thermal gas release is not calculated
# (by setting the fractional bubble coverage at grain boundary saturation to infinite,
# i.e., saturation_coverage = 1.e+20).
# Also, the fission gas swelling is not calculated in this test. The results demonstrate that
# the athermal release model provides a contribution to FGR independent of thermal release and given
# by an approximately constant fraction of the generated gas, released upon creation due to the recoil
# and knockout mechanisms.
initial_fuel_density = 10417.
[GlobalParams]
density = ${initial_fuel_density}
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11
[]
[Mesh]
coord_type = RZ
patch_size = 1000
[mesh]
type = FileMeshGenerator
file = single_pellet_2d.e
[]
[]
[Variables]
[temperature]
initial_condition = 300.
[]
[]
[AuxVariables]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 2
[]
[crack_length]
order = CONSTANT
family = MONOMIAL
[]
[gas_ath_3]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = linpow_ath_test.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = peaking_factors.csv
scale_factor = 1
axis = 1
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[heat_source]
type = ADNeutronHeatSource
variable = temperature
block = 2
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = 2
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 12
num_axial = 9
a_upper = 0.01496
a_lower = 0.00226
fuel_inner_radius = 0.
fuel_outer_radius = 0.005305
fuel_volume_ratio = 1.
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[pelletid]
type = PelletIdAux
block = 2
variable = pellet_id
a_lower = 0.00226
a_upper = 0.01496
number_pellets = 1
execute_on = initial
[]
[cracklen]
type = ADMaterialRealAux
variable = crack_length
property = crack_length
[]
[fgath]
type = ADMaterialRealAux
variable = gas_ath_3
property = gas_concentration_athermal_release_volume
[]
[]
[BCs]
[convective_clad_surface]
type = ConvectiveFluxBC
boundary = '10'
variable = temperature
rate = 7500.
initial = 300.
final = 515.5
duration = 1.0e+04
[]
[top_pellet]
variable = temperature
value = 0.
type = NeumannBC
boundary = '21'
[]
[bottom_pellet]
variable = temperature
value = 0.
type = NeumannBC
boundary = '20'
[]
[]
[Materials]
[fuel_thermal]
type = ADUO2Thermal
block = 2
thermal_conductivity_model = FINK_LUCUTA
initial_porosity = 0.0
temperature = temperature
burnup_function = burnup
[]
[density2]
type = ADParsedMaterial
block = 2
property_name = density
expression = ${initial_fuel_density}
[]
[fission_gas_release]
type = ADUO2Sifgrs
block = 2
temperature = temperature
burnup_function = burnup
saturation_coverage = 1.e+20
ath_model = true
pellet_id = pellet_id
pellet_brittle_zone = pbz
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[UserObjects]
[pbz]
type = PelletBrittleZone
block = 2
pellet_id = pellet_id
temperature = temperature
pellet_radius = 0.005305
a_lower = 0.00226
a_upper = 0.01496
number_pellets = 1
execute_on = 'initial linear'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_max_its = 100
l_tol = 1.e-04
nl_max_its = 15
nl_rel_tol = 1.e-8
nl_abs_tol = 1.e-8
start_time = 0.
end_time = 1.e+08
num_steps = 5000
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.e+06
time_t = '0 10000 '
time_dt = '2.e+03 1.e+07'
[]
[]
[Postprocessors]
[gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 2
[]
[gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 2
[]
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT6A/MT6A_1-2kW.i)
################################################################################
#
# Description: LOCA MT-6A Test with constant power level of 1.2 kW/m
#
#
# External files:
# axial peaking factor file MT6A_axial_peaking.csv
#
################################################################################
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
group_variables = 'disp_x disp_y'
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 6.1e-4
pellet_mesh_density = customize
ny_p = 100
nx_c = 4
nx_p = 12
pellet_outer_radius = .00413
ny_cu = 3
ny_c = 100
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.66
ny_cl = 3
clad_top_gap_height = 0.18613
clad_gap_width = 7.5e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 253
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[]
[AuxVariables]
[temp_initial]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 7.8e-6 # 2D grain radius
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[hmode]
order = CONSTANT
family = MONOMIAL
[]
[htype]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 150'
y = '1.2e3 1.2e3'
[]
[hmode_function]
type = PiecewiseConstant
x = '0 60 150'
y = '9 10 10'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = MT6A_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '0 150'
y = '1.72 1.72'
scale_factor = 1e6
[]
[temp_func]
type = ParsedFunction
expression = '-24.096*y*y+152.47*y+437.81'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors' # W/m
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz elastic_strain_yy strain_xx strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress' #plastic_strain_xx plastic_strain_yy plastic_strain_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
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
axial_power_profile = axial_peaking_factors
factor = 0.16e15 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = hmode
boundary = 2
[]
[htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = htype
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = clad
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
block = clad
execute_on = timestep_end
[]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
block = clad
execute_on = timestep_end
[]
[burst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
# TODO: Have StandardLWRFuelRodOutputs create this when the feature in issue #1054 is
# developed.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.66478
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00413 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0293 .9707 0 0 0 0' #TODO: Looks like it's set for 2.93%!
RPF = RPF
density = 10431 #95 %TD Assume TD = 10980 kg/cm3
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e11
normalize_penalty = true
model = frictionless
# model = coulomb
formulation = penalty
# friction_coefficient = 1.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.0 # Pa
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 9.15e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 310 # K
inlet_pressure = 1.72e6 # Pa
# inlet_massflux = massfluxfunc # kg/m^2-sec
rod_diameter = 0.00963 # m
rod_pitch = 1.275e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
heat_transfer_mode = hmode_function
heat_transfer_coefficient = 0.0000001 #W/m^2-K
# heat_transfer_mode = htc_function
htc_correlation_type = 1
flooding_time = 60.0
flooding_rate = 0.059182 # m/s
initial_temperature = 1175 # K
initial_power = 1.776 # kW/m
blockage_ratio = 0.0 #
fuel_stack_length = 3.66 # m
reflooding_model = 1
compute_enthalpy = false
[]
[]
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = temp_initial
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0 #95 %TD Assume TD = 10980 kg/cm3
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
# initial_grain_radius = 6.552e-6 # 2D grain radius 4.2e-6
grain_radius = grain_radius
gbs_model = true
burnup = burnup
# compute_swelling = true
transient_option = MICROCRACKING
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 10431 #95 %TD Assume TD = 10980 kg/cm3
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temp
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_standard_thermal_creep_end = 700.0
temperature_loca_creep_begin = 900.0
max_inelastic_increment = 1e-4
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
temperature = temp
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = temp_initial
eigenstrain_name = clad_thermal_eigenstrain
[]
[phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temp
fraction_beta_phase = fract_beta_phase
outputs = all
output_properties = 'failed burst_stress'
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0.0
end_time = 63.02
dtmax = 5
dtmin = 0.00001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 0.01
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
execute_on = timestep_end
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
fission_rate = fission_rate
variable = temp
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.66 # rod height
execute_on = timestep_end
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_creep_rate]
type = ElementExtremeValue
block = clad
value_type = max
variable = creep_rate_aux
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 40
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim_grainGrowth.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.2
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9144
pellet_outer_radius = 2.794e-3
pellet_inner_radius = 6.985e-4
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 101.6e-6
clad_thickness = 0.5334e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.057
elem_type = QUAD8
nx_c = 4
ny_c = 1000
nx_p = 10
ny_p = 500
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
scaling = 1
[]
[]
[AuxVariables]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fraction_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 0.854004932 0.854004932'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 2.99513e+19 2.99513e+19'
[]
[axial_power_profile]
type = PiecewiseBilinear
x = '0.0334152 0.09468 0.1559448 0.2162952 0.27756 0.3388248 0.3991752 0.46044 0.5217048 0.5820552 0.64332 0.7045848 0.7649352 0.8262 0.8874648'
y = '0 31858942.74'
z = '5493.43832 7183.727034 29157.48031 34228.34646 37608.92388 40144.35696 41412.07349 42257.21785 41834.64567 39721.78478 37608.92388 33805.77428 28312.33596 4225.721785 2535.433071 5041.338583 6592.519685 26757.87402 31411.41732 34513.77953 36840.55118 38003.93701 38779.52756 38391.73228 36452.75591 34513.77953 31023.62205 25982.28346 3877.952756 2326.771654'
scale_factor = 1
axis = 1
[]
[average_power_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 24264.05646 24264.05646'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[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
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.2
axial_power_profile = axial_power_profile
rod_ave_lin_pow = fraction_history
pellet_diameter = 0.005588
execute_on = timestep_begin
pellet_inner_diameter = 0.001397
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 0.151e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 0.151e6
inlet_massflux = 1687.43
rod_diameter = 6.858e-3
rod_pitch = 1.7e-2
linear_heat_rate = fraction_history
axial_power_profile = axial_power_profile
coolant_material = sodium
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = 0.2
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
outputs = exodus
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
bubble_gb_limit = 1.0e+11
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fast_neutron_flux]
type = GenericFunctionMaterial
block = clad
prop_names = fast_neutron_flux
prop_values = fast_neutron_flux_function
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 31858942.74
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = fraction_history
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.9144 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = fftf_fo2_L09_new_GrainGrowth_chkfile
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/MOX/JOYO/MK-I/analysis/MK-I_50MW_master_old_bubble_gb_lim.i)
initial_fuel_density = 10836.8
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.065
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.6
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000100
clad_thickness = 0.00035
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.599
elem_type = QUAD8
nx_c = 4
ny_c = 200
nx_p = 20
ny_p = 200
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = '0 70000 17153028'
y = '0 25577 25577'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 70000 17153028'
y = '0 1.2e+19 1.2e+19'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0 0.071 0.146 0.221 0.296 0.37 0.443 0.566'
y = '0 17153028'
z = '0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672 0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = '0 70000 17153028'
y = '0 21000 21000'
[]
[clad_surface_temp]
type = PiecewiseBilinear
x = '0 0.075 0.15 0.225 0.3 0.375 0.45 0.525 0.6'
y = '0 17153028'
z = '295 295 295 295 295 295 295 295 295 499.9 509.1 517.8 525.42 532.71 540.29 547.7 552.3 554.81'
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[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
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.065
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp_clad_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_surface_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 101325
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 300000
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10836.8
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
diff_coeff_option = TURNBULL_D1_4D2_4D3
fission_rate = fission_rate
grain_radius_const = 8.01e-6 #I'm keeping the grain radius const because the grain growth in MOX is probably different due to high Temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-5
fixed_point_rel_tol = 1e-5
fixed_point_max_its = 1
l_max_its = 70
l_tol = 8e-3
nl_max_its = 70
nl_rel_tol = 1e-5
nl_abs_tol = 1e-5
start_time = 0
n_startup_steps = 1
end_time = 17153028
dtmax = 1e6
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 5000
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.6 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = MK-I_50MW_sub_old_bubble_gb_lim.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'temp disp_x disp_y'
[]
(workshop/bison_example/Smeared_mortar.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
family = LAGRANGE
order = SECOND
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'temperature disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = always
patch_size = 100 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[file]
file = smeared.e
type = FileMeshGenerator
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temperature]
initial_condition = 295.0
[]
[disp_x]
block = 'pellet_type_1 clad'
[]
[disp_y]
block = 'pellet_type_1 clad'
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = peakingfactors.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
strain = FINITE
temperature = temperature
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
strain = FINITE
temperature = temperature
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = 'pellet_type_1 clad'
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet_type_1 clad'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet_type_1
burnup_function = burnup
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fis_gas_released
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = 5
secondary = 10
c_normal = 1e+11
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 0.987775
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[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 = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temperature
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 = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
fuel_pin_geometry = fuel_pin_geometry
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
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 = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temperature
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 = temperature
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 = temperature
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 = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temperature
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-6 NONZERO 1e-13'
snesmf_reuse_base = false
line_search = 'none'
l_max_its = 20
l_tol = 8e-3
nl_max_its = 60
nl_rel_tol = 1e-4
nl_abs_tol = 1e-12 # LM
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 1e6
dtmin = 1
automatic_scaling = true
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 50
iteration_window = 2
growth_factor = 2
cutback_factor = .5
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temperature
execute_on = 'initial linear'
[]
[ave_fuel_temp]
type = ElementAverageValue
block = pellet_type_1
variable = temperature
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxAverage
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[_dt] # time step
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[fuel_centerline_temp]
type = NodalVariableValue
variable = temperature
nodeid = 616
[]
[fuel_surface_temp]
type = NodalVariableValue
variable = temperature
nodeid = 587
[]
[clad_surface_temp]
type = NodalVariableValue
variable = temperature
nodeid = 1440
[]
[penetration_mid]
type = NodalVariableValue
variable = penetration
nodeid = 587
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_clad_radial_displacement'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'outfile_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[outfile_clad_radial_displacement]
type = CSV
execute_on = 'timestep_end'
[]
[outfile_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(test/tests/sifgrs/uo2/diffusion_coefficient.i)
# Analytical test for the diffusion coefficient of the Sifgrs fission gas behavior model.
#
# For the purpose of verifying the implementation of the diffusion coefficient, the BISON results are compared with an independent calculations (see attached file regression_tests_sifgrs.xlsx).
# The formulation for the diffusion coefficient adopted in the Sifgrs model is based on the formulation of Turnbull et al. (JNM 107, 168, 1982; Preston, England, September 18-22, 1988).
#
# Variable definitions
# T = temperature in K
# F = Fission rate in fissions/(m^3*s)
# k = Boltzmann constant in J/K = 1.380651e-23
# Zo = fragment influence; fission fragment range of influence in meters = 1e-9
# lf = fragment range; fission fragment travel distance before coming to rest in meters = 6e-6
#
# Equations and sample calculations
#
# Use T = 1700 K, F = 2.5e19 fission/m^3s
#
# Diffusion coefficient terms (m^2/s)
#
# D1 = intrinsic term = 7.6e-10 * exp(-4.8599e-19/kT)
# D1 = 7.73e-19
#
# D2 = enhanced vacancy term = 1.41e-25 * exp(-1.9053e-19/kT) * sqrt(F)
# D2 = 2.10e-19
#
# The purely rating dependent term D3 is neglected (see, e.g., P. Losonen JNM, 304, 29, 2002)
#
# D = single gas atom diffusion coefficient = D1 + 4*D2
# D = 1.61e-18
#
# Based on the formulation of Speight (Nuclear Science and Engineering 37, 180, 1969), include effects of intragranular trapping and resolution to compute an effective diffusion coefficient. The trapping and resolution rates are computed using relations from White and Tucker (JNM 118, p1, 1983)
#
# R = Intragranular bubble radius in m = 5e-10*(1 + 106*exp(-8703/T))
# R = 8.17e-10
#
# Radius_sum = intragranular bubble radius + fragment influence = R + Zo in m
# Radius_sum = 1.82e-09
#
# CBtot = intragranular bubble concentration in 1/m^3 = 1.52e+27 / T - 3.3e+23
# CBtot = 5.64e+23
#
# g = trapping rate = 4 * pi * R * D * CBtot
# g = 5.70e-03
#
# b = resolution rate = 3.03 * F * pi * lf * Radius_sum^2
# b = 4.71e-03
#
# Deff = effective diffusion coefficient = D*b/(b + g)
# Deff = 5.41e-19
#
# Example problem description
#
# A single hex 8 element is used to solve the heat equation with no source term. One boundary of the block is insulated while the
# boundary opposite to the insulated boundary is assigned a prescibed Dirichlet boundary condition defined by a function.
# The function increases the temperature, starting at 800 K increasing linearly to 1700 K. At the same time, the fission rate is increasing linearly from 1e19 to 2.5e19. At the final time in this calculation, Deff should equal 5.41e-19.
# See also the sheet sifgr_diffusion_coefficient of the attached file (regression_tests_sifgrs.xlsx), which plots Deff values from this calculation and independent calculations. One should be able to reproduce that plot with the results from this test.
#
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
x = '0 1.2e7'
y = '800 1700'
scale_factor = 1
[]
[Fiss_func]
type = PiecewiseLinear
x = '0 1.2e7'
y = '1e19 2.5e19'
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 800.0
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[diffusion_coefficient]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
temperature = T
fission_rate = fission_rate
testing_output = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
start_time = 0.0
num_steps = 12
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[]
[Outputs]
exodus = true
[]
(test/tests/sifgrs/u3si2/intergranular_ext_fsngas.i)
# This input tests external fission gas coupling to U3Si2Sifgrs with PolyPole-2
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
[]
[ext_gas]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[ext_gas_aux]
type = ParsedAux
variable = ext_gas
coupled_variables = 'fission_rate'
use_xyzt = true
expression = 'fission_rate * 0.3017 / 6.02214076e23 * t'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = U3Si2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
fission_gas_conc = ext_gas
ig_diff_algorithm = POLYPOLE2
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[]
[Outputs]
exodus = true
hide = 'ext_gas'
[]
(assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-1kW.i)
################################################################################
#
# Description: LOCA MT-4 Test with constant power level of 1.1 kW/m
#
#
# External files:
# axial peaking factor file MT4_axial_peaking.csv
#
################################################################################
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
group_variables = 'disp_x disp_y'
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 6.1e-4
pellet_mesh_density = customize
ny_p = 100
nx_c = 4
nx_p = 12
pellet_outer_radius = .00413
ny_cu = 3
ny_c = 100
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.66
ny_cl = 3
clad_top_gap_height = 0.18613
clad_gap_width = 7.5e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 253
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[]
[AuxVariables]
[temp_initial]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 7.8e-6 # 2D grain radius
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[hmode]
order = CONSTANT
family = MONOMIAL
[]
[htype]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 110'
y = '1.1e3 1.1e3'
[]
[hmode_function]
type = PiecewiseConstant
x = '0 57 110'
y = '9 10 10'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = MT4_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '0 110'
y = '0.28 0.28'
scale_factor = 1e6
[]
[temp_func]
type = ParsedFunction
expression = '-24.096*y*y+152.47*y+437.81'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors' # W/m
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz elastic_strain_yy strain_xx strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress' #plastic_strain_xx plastic_strain_yy plastic_strain_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
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
axial_power_profile = axial_peaking_factors
factor = 0.16e15 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = hmode
boundary = 2
[]
[htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = htype
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = clad
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
block = clad
execute_on = timestep_end
[]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
block = clad
execute_on = timestep_end
[]
[burst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
# TODO: Have StandardLWRFuelRodOutputs create this when the feature in issue #1054 is
# developed.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.66478
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00413 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0293 .9707 0 0 0 0'
RPF = RPF
density = 10431.0 #95 %TD Assume TD = 10980 kg/cm3
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
normalize_penalty = true
model = frictionless
# model = coulomb
formulation = penalty
# friction_coefficient = 1.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.0 # Pa
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 9.3e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 311 # K
inlet_pressure = 0.28e6 # Pa
# inlet_massflux = massfluxfunc # kg/m^2-sec
rod_diameter = 0.00963 # m
rod_pitch = 1.275e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
heat_transfer_mode = hmode_function
heat_transfer_coefficient = 0.0000001 #W/m^2-K
# heat_transfer_mode = 10
htc_correlation_type = 1
flooding_time = 57.0
flooding_rate = 0.127 # m/s
initial_temperature = 1140 # K
initial_power = 1.628 # kW/m
blockage_ratio = 0.0 #
fuel_stack_length = 3.66 # m
reflooding_model = 1
compute_enthalpy = false
[]
[]
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = temp_initial
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0 #95 %TD Assume TD = 10980 kg/cm3
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
# initial_grain_radius = 6.552e-6 # 2D grain radius 4.2e-6
grain_radius = grain_radius
gbs_model = true
burnup = burnup
# compute_swelling = true
transient_option = MICROCRACKING
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 10431 #95 %TD Assume TD = 10980 kg/cm3
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temp
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_standard_thermal_creep_end = 700.0
temperature_loca_creep_begin = 900.0
max_inelastic_increment = 1e-4
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
temperature = temp
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = temp_initial
eigenstrain_name = clad_thermal_eigenstrain
[]
[phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temp
fraction_beta_phase = fract_beta_phase
outputs = all
output_properties = 'failed burst_stress'
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0.0
end_time = 110
dtmax = 5
dtmin = 0.00001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 0.01
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
execute_on = timestep_end
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
fission_rate = fission_rate
variable = temp
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.66 # rod height
execute_on = timestep_end
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_creep_rate]
type = ElementExtremeValue
block = clad
value_type = max
variable = creep_rate_aux
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 40
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/sifgrs/uo2/material_input_fission_rate.i)
# @Requirement F2.40
# This is a test of passing fission_rate_material into Sifgrs. Based on mechanistic_igmodel.i.
#
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1273'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
initial_condition = 1273
[]
[]
[AuxVariables]
[fission_rate]
[]
[fract_FGR_analytical]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[bbl_cnc]
type = MaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
execute_on = 'TIMESTEP_END'
[]
[rad_bbl]
type = MaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
execute_on = 'TIMESTEP_END'
[]
[gascnc_bbl]
type = MaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[fission_gas_behavior]
type = UO2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate_material = Fission_rate_material
grain_radius_const = 5.e-6
ig_bubble_model = NUCLEATION_RESOLUTION
initial_porosity = 0.0
[]
[Fission_rate_material]
type = ParsedMaterial
block = 0
property_name = Fission_rate_material
expression = '1.e19'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 10
dt = 19800.
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
[]
[]
[Outputs]
csv = true
[]
(test/tests/triso_failure/sub.i)
[GlobalParams]
density = 10810.0 # kg/m^3
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temp]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19 # units of fissions/m**3
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[high_fidelity_strength_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_crackedOPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_correlation_crackedIPyC]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat]
type = HeatConduction
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
# contact_pressure_input = 10e6
# quadrature = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = DirichletBC
variable = temp
boundary = exterior
value = 1346.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure] # apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = volumeGas # coupling to post processor to get gas volume
material_input = 'fis_gas_released co_production' # coupling to post processor to get fission gas added, co added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[max_principal_stress]
type = RankTwoInvariant
property_name = max_principal_stress
rank_two_tensor = stress
invariant = MaxPrincipal
[]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18 # n/m^2-sec
[]
[fission_gas_release] # Sifgr fission gas release mode
type = UO2Sifgrs
block = fuel
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temp
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temp
[]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (bison kernel)
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temp]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000 #kg/m^3
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10 #47787559927.148 #3.96e10
poissons_ratio = 0.33
[]
[PyC_temp]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0 # kg/m^3
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temp]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0 # kg/m^3
block = SiC
[]
[characteristic_strength_SiC]
type = GenericConstantMaterial
prop_values = '9640000'
prop_names = 'characteristic_strength'
block = SiC
[]
[characteristic_strength_PyC]
type = GenericConstantMaterial
prop_values = '964000'
prop_names = 'characteristic_strength'
block = 'IPyC OPyC'
[]
[]
[Dampers]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
# petsc_options = '-snes_mf_operator -snes_ksp_ew -ksp_monitor'
# petsc_options_iname = '-pc_type -pc_hypre_type'
# petsc_options_value = 'hypre boomeramg'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 2
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temp
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temp
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = WeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
[]
[failure_indicator_SiC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_SiC
[]
[strength_IPyC]
type = WeibullEffectiveMeanStrength
block = IPyC
weibull_modulus = 6
[]
[failure_indicator_IPyC]
type = WeibullFailureOutputUsingCorrelation
block = IPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_IPyC
[]
[strength_OPyC]
type = WeibullEffectiveMeanStrength
block = OPyC
weibull_modulus = 6
[]
[failure_indicator_OPyC]
type = WeibullFailureOutputUsingCorrelation
block = OPyC
weibull_modulus = 6
stress_name = max_principal_stress
effective_mean_strength = strength_OPyC
[]
[failure_indicator_SiC_crackedIPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedIPyC'
[]
[failure_indicator_SiC_crackedOPyC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = max_principal_stress
high_fidelity_analysis_strength = 'high_fidelity_strength_crackedIPyC'
stress_correlation_function = 'stress_correlation_crackedOPyC'
[]
[triso_failure]
type = TRISOFailureEvaluation
IPyC_failure = failure_indicator_IPyC
OPyC_failure = failure_indicator_OPyC
SiC_failure = failure_indicator_SiC
SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
SiC_failure_crackedOPyC = failure_indicator_SiC_crackedOPyC
[]
[ipyc_cracking]
type = TRISOFailureEvaluation
IPyC_failure = failure_indicator_IPyC
OPyC_failure = failure_indicator_OPyC
SiC_failure = failure_indicator_SiC
SiC_failure_crackedIPyC = failure_indicator_SiC_crackedIPyC
SiC_failure_crackedOPyC = failure_indicator_SiC_crackedOPyC
failure_type = IPYC_CRACKING
[]
[burnup_at_failure]
type = TRISOFailureOccurrenceStatus
failure_evaluation = ipyc_cracking
failure_information = burnup
[]
[left_bc]
type = NodalExtremeValue
boundary = xzero
variable = disp_x
[]
[]
[UserObjects]
[triso_failure_terminator]
type = Terminator
expression = 'triso_failure > 0'
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = false
perf_graph = true
[]
[Controls]
[stochastic]
type = SamplerReceiver
[]
[]
(test/tests/triso_failure/triso_1d_asphericity_failure.i)
[GlobalParams]
density = 10810.0
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1346.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[high_fidelity_strength_asphericity]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1000000 1000000'
[]
[stress_correlation_asphericity]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[stress_change_correlation_asphericity]
type = PiecewiseLinear
x = '0 1.0e11'
y = '1 1'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
[fuel_buffer_sic]
block = 'fuel buffer SiC'
eigenstrain_names = thermal_strain
[]
[ipyc_opyc]
block = 'IPyC OPyC'
incremental = true
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
# coupling to a postprocessor
initial_moles = initial_moles
gas_released = 'fis_gas_released co_production'
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
tangential_tolerance = 1e-6
# contact_pressure_input = 10e6
# quadrature = true
[]
[]
[BCs]
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1346.0
[]
[exterior_pressure_x]
type = Pressure
use_displaced_mesh = false
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure]
# apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
use_displaced_mesh = false
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
# coupling to post processor
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[Materials]
[stress_yy]
type = RankTwoCartesianComponent
rank_two_tensor = stress
property_name = stress_yy
index_i = 1
index_j = 1
[]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 1.708707e18
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeLinearElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1346.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10810.0
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_thermal]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5
specific_heat = 720.0
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_thermal]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_thermal]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9
specific_heat = 620.0
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0
block = SiC
[]
[characteristic_strength]
type = GenericConstantMaterial
prop_values = '9640000'
prop_names = 'characteristic_strength'
block = SiC
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
num_steps = 10
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temperature]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temperature]
type = TimeIntegratedPostprocessor
value = avg_surface_temperature
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temperature
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[strength_SiC]
type = WeibullEffectiveMeanStrength
block = SiC
weibull_modulus = 6
[]
[failure_indicator_SiC]
type = WeibullFailureOutputUsingCorrelation
block = SiC
weibull_modulus = 6
stress_name = stress_yy
high_fidelity_analysis_strength = 'high_fidelity_strength_asphericity'
stress_correlation_function = 'stress_correlation_asphericity'
stress_change_correlation_function = 'stress_change_correlation_asphericity'
[]
[triso_failure]
type = TRISOFailureEvaluation
SiC_failure = failure_indicator_SiC
[]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
csv = true
perf_graph = true
[]
(examples/2D_plane_strain_rod/planestrain.i)
initial_fuel_density = 10431.0
[GlobalParams]
temperature = temp
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
[]
[Mesh]
patch_size = 100 # For contact algorithm
[mesh]
type = FileMeshGenerator
file = planestrain.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 580.0 # set initial temp to ambient
[]
[]
[AuxVariables]
[fission_rate]
block = pellet_type_1
[]
[burnup]
block = pellet_type_1
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[relocation_strain]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '0 1e4'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
strain = FINITE
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
[]
[clad]
block = clad
strain = FINITE
planar_formulation = PLANE_STRAIN
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = pellet_type_1
fission_rate = fission_rate
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 21
axial_direction = z
density = ${initial_fuel_density}
a_lower = -1e-3 # mesh dependent!
a_upper = 1e-3 # mesh dependent!
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 0.987775 # for use with dished pellets (ratio of actual volume to cylinder volume)
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
RPF = RPF
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[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
[]
[relocation_strain]
type = MaterialRealAux
property = relocation_strain
variable = relocation_strain
block = pellet_type_1
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 8
execute_on = linear
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 7
secondary = 8
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
[]
[]
[BCs]
# Define boundary conditions
[no_y_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_y
boundary = 15
value = 0.0
[]
[no_x_all] # pin pellets and clad along axis of symmetry (x)
type = DirichletBC
variable = disp_x
boundary = 16
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[convective_clad_surface] # apply convective boundary to clad outer surface
type = ConvectiveFluxBC
boundary = '2'
variable = temp
rate = 38200.0 #convection coefficient (h)
initial = 580.0
final = 580.0
duration = 1.0e4 #duration of initial power ramp
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = pellet_type_1
temperature = temp
burnup = burnup
initial_porosity = 0.0
[]
[fuel_solid_mechanics_swelling] # free expansion strains (swelling and densification) for UO2 (BISON kernel)
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = MATPRO
block = pellet_type_1
burnup = burnup
initial_fuel_density = 10431.0
temperature = temp
eigenstrain_name = 'fuel_volumetric_eigenstrain'
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet_type_1
temperature = temp
fission_rate = fission_rate
density = 10431.0
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet_type_1
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
block = pellet_type_1
inelastic_models = 'fuel_creep'
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup = burnup
diameter = 0.0082
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =160e-6
burnup_relocation_stop = 1.e20
relocation_activation1 = 5000
axial_direction = z
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_creep_model]
type = ZryCreepHayesHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
temperature = temp
zircaloy_material_type = stress_relief_annealed
model_irradiation_creep = true
model_thermal_creep = true
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = elastic
inelastic_models = 'clad_creep_model'
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 5.0e-6
temperature = temp
stress_free_temperature = 580.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irrgrowth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
axial_direction = 2
zircaloy_material_type = ESCORE_IrradiationGrowthZr4
eigenstrain_name = 'clad_irradiation_eigenstrain'
[]
[fission_gas_release] # Forsberg-Massih fission gas release mode
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
grain_radius = 10.0e-6
#external_pressure = 40e6
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = 10431.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
# PETSC options:
# petsc_options
# petsc_options_iname
# petsc_options_value
#
# controls for linear iterations
# l_max_its
# l_tol
#
# controls for nonlinear iterations
# nl_max_its
# nl_rel_tol
# nl_abs_tol
#
# time control
# start_time
# dt
# optimal_iterations
# iteration_window
# linear_iteration_ratio
type = Transient
solve_type = 'PJFNK'
petsc_options = '-ksp_gmres_modifiedgramschmidt'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_composite_pcs -sub_0_pc_hypre_type -sub_0_pc_hypre_boomeramg_max_iter -sub_0_pc_hypre_boomeramg_grid_sweeps_all -sub_1_sub_pc_type -pc_composite_type -ksp_type -mat_mffd_type'
petsc_options_value = '201 composite hypre,asm boomeramg 2 2 lu multiplicative fgmres ds'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = 0.0
end_time = 1.0e6
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
time_t = '1e4 1e5 1e6'
time_dt = '1e3 1e4 1e5'
[]
dtmax = 2e6
dtmin = 1
# optimal_iterations = 6
# iteration_window = 2
# linear_iteration_ratio = 100
[Quadrature]
order = THIRD
[]
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[average_interior_clad_temperature] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[average_centerline_fuel_temperature] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[plenum_temperature]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial timestep_end'
[]
[plenum_volume] # gas volume
type = InternalVolume
boundary = 9
addition = 1.3e-5 #rough guess of plenum volume/unit length of fuel
execute_on = 'initial linear'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_generated] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = linear
[]
[fission_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = linear
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[_dt] # time step
type = TimestepSize
execute_on = timestep_end
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet_type_1
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
execute_on = timestep_end
[]
[fission_gas_released_percentage]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fission_gas_generated
[]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
max_rows = 25
[]
[]
(assessment/TRISO/benchmark/IAEA_CRP-6/fuel_performance/case_11/case_11_1D.i)
#
# This case is taken from Advances in high temperature gas cooled reactor fuel
# technology. Technical Report IAEA-TECDOC-1674, International Atomic Energy
# Agency, 2012.
#
# See also Hales, et al., Multidimensional multiphysics simulation of TRISO
# particle fuel, JNM, 443, 2013. https://doi.org/10.1016/j.jnucmat.2013.07.070
#
# The correctness of the results computed by this case must be checked against
# results from the IAEA benchmark. The best way to do this is to compare
# results with information in the JNM article.
#
initial_fuel_density = 10810.0
[GlobalParams]
density = ${initial_fuel_density} # kg/m^3
flux_conversion_factor = 1.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
[]
[Mesh]
coord_type = RSPHERICAL
[gen]
type = TRISO1DMeshGenerator
elem_type = EDGE3
coordinates = '0 2.485e-4 3.425e-4 3.425e-4 3.835e-4 4.195e-4 4.595e-4'
mesh_density = '6 6 0 6 8 6'
block_names = 'fuel buffer IPyC SiC OPyC'
[]
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1608.0
[]
[]
[Functions]
[radial_eigenstrain]
type = ParsedFunction
expression = 't*(4.52013e-4/6.0*t*t*t*t*t - 8.36313e-3/5.0*t*t*t*t + 5.67549e-2/4.0*t*t*t - 1.74247e-1/3.0*t*t + 2.62692e-1/2.0*t - 1.43234e-1)'
[]
[tangential_eigenstrain]
type = ParsedFunction
expression = 't*(1.30457e-4/4.0*t*t*t - 2.10029e-3/3.0*t*t + 9.07826e-3/2.0*t - 3.24737e-2)'
[]
[fission_rate]
type = ParsedFunction
expression = 1.1135e20 # units of fissions/m**3
[]
[k_function]
type = ParsedFunction
expression = '4.93e-29'
[]
[]
[AuxVariables]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
block = fuel
initial_condition = 0.0
[]
[fission_rate]
block = fuel
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[IPyC_OPyC]
block = 'IPyC OPyC'
strain = finite
eigenstrain_names = 'thermal_strain pyc_eigenstrain'
[]
[rest]
block = 'fuel buffer SiC'
strain = finite
eigenstrain_names = thermal_strain
[]
[]
[Kernels]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
energy_per_fission = 3.2e-11 # units of J/fission
fission_rate = fission_rate
[]
[]
[AuxKernels]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[]
[fission_rate]
type = FunctionAux
variable = fission_rate
block = fuel
function = fission_rate
[]
[burnup]
type = BurnupAux
variable = burnup
block = fuel
fission_rate = fission_rate
molecular_weight = 0.270 # units of kg/mole
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
penalty = 1e5
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = IPyC_inner_boundary
secondary = buffer_outer_boundary
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = 'fis_gas_released co_production' # coupling to postprocessors which supply the fission gas addition, co addition
released_fractions = '0.153 0.847;
1'
released_gas_types = 'Kr Xe;
CO'
tangential_tolerance = 1e-6
# contact_pressure_input = 10e6
# quadrature = true
[]
[]
[BCs]
# pin particle along symmetry planes
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
# fix temperature on free surface
[freesurf_temp]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1608.0
[]
# exterior and internal pressures
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure] # apply gas pressure on buffer and IPyC boundaries
[plenumPressure]
boundary = buffer_IPyC_boundary
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = volumeGas # coupling to post processor to get gas volume
material_input = 'fis_gas_released co_production' # coupling to post processor to get fission gas added, co added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[Materials]
[flux]
type = FastNeutronFlux
calculate_fluence = true
factor = 2.37417e18 # n/m^2-sec
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
fission_rate = fission_rate
grain_radius_const = 5.0e-6
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 'fuel buffer SiC'
[]
[PyC_stress]
type = PyCCreep
block = 'IPyC OPyC'
k = k_function
poissons_ratio = 0.4
temperature = temperature
[]
[normal_vectors_triso]
type = NormalVectorsTRISO
block = 'IPyC OPyC'
[]
[PyC_eigenstrain]
type = PyCIrradiationEigenstrain
block = 'IPyC OPyC'
radial_eigenstrain_function = radial_eigenstrain
tangential_eigenstrain_function = tangential_eigenstrain
eigenstrain_name = pyc_eigenstrain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10e-6
stress_free_temperature = 1608.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[PyC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = 'buffer IPyC OPyC'
thermal_expansion_coeff = 5.5e-6
stress_free_temperature = 1608.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[SiC_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = SiC
thermal_expansion_coeff = 4.9e-6
stress_free_temperature = 1608.0
eigenstrain_name = thermal_strain
temperature = temperature
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = FINK_LUCUTA
block = fuel
temperature = temperature
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[fuel_den]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[buffer_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = buffer
youngs_modulus = 2e8
poissons_ratio = 0.345
[]
[buffer_temperature]
type = HeatConductionMaterial
block = buffer
thermal_conductivity = 0.5 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[buffer_den]
type = StrainAdjustedDensity
strain_free_density = 1000 #kg/m^3
block = buffer
[]
[PyC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 'IPyC OPyC'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
[]
[PyC_temperature]
type = HeatConductionMaterial
block = 'IPyC OPyC'
thermal_conductivity = 4.0 # J/m-s-K
specific_heat = 720.0 # J/kg-K
[]
[PyC_den]
type = StrainAdjustedDensity
strain_free_density = 1880.0 # kg/m^3
block = 'IPyC OPyC'
[]
[SiC_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = SiC
youngs_modulus = 3.7e11
poissons_ratio = 0.13
[]
[SiC_temperature]
type = HeatConductionMaterial
block = SiC
thermal_conductivity = 13.9 # J/m-s-K
specific_heat = 620.0 # J/kg-K
[]
[SiC_den]
type = StrainAdjustedDensity
strain_free_density = 3200.0 # kg/m^3
block = SiC
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
solve_type = 'PJFNK'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 3.032e7
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 20
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[burnup]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
[]
[volumeFuel]
type = InternalVolume
boundary = fuel_outer_boundary
[]
[volumeGas]
type = InternalVolume
boundary = 'fuel_outer_boundary IPyC_inner_boundary'
addition = -5.53e-11
execute_on = 'initial timestep_end'
[]
[volumeBufferShell]
type = InternalVolume
boundary = buffer_IPyC_boundary
[]
[ave_temp_interior]
type = SideAverageValue
boundary = buffer_IPyC_boundary
variable = temperature
execute_on = 'initial timestep_end'
[]
# Postprocessors for CO production
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
[]
[avg_surface_temp]
type = SideAverageValue
variable = temperature
boundary = exterior
[]
[time_int_surf_temp]
type = TimeIntegratedPostprocessor
value = avg_surface_temp
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temp
initial_enrichment = 0.14029
[]
[tang_SiC]
type = ElementalVariableValue
variable = stress_yy
elementid = 18
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
print_linear_residuals = true
time_step_interval = 1
exodus = true
csv = true
perf_graph = true
[]
(test/tests/sifgrs/u3si2/intragranular.i)
# @Requirement F2.40
# This test is for evaluating the extended PolyPole-2 algorithm (for the intra-granular behavior calculation)
# in the U3Si2Sifgrs fission gas behavior model.
#
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 0.01
ymin = 0
ymax = 0.01
zmin = 0
zmax = 0.01
nx = 1
ny = 1
nz = 1
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '800'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
order = FIRST
family = LAGRANGE
initial_condition = 800
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[rad_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[bbl_grn_3]
order = CONSTANT
family = MONOMIAL
[]
[gas_bbl_grn]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[bbl_cnc]
type = MaterialRealAux
variable = bbl_grn_3
property = bubble_concentration_intra
[]
[rad_bbl]
type = MaterialRealAux
variable = rad_bbl_grn
property = bubble_radius_intra
[]
[gascnc_bbl]
type = MaterialRealAux
variable = gas_bbl_grn
property = gas_concentration_bubble_intra
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = bottom
[]
[]
[Materials]
[fission_gas_behavior]
type = U3Si2Sifgrs
block = 0
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
grain_radius_const = 28.e-6
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e3
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 0
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 0
[]
[]
[Outputs]
exodus = true
[]
(examples/2D-RZ_rodlet_10pellets/smeared_smallStrain/Smeared_smallStrain.i)
# Model is of a 10 pellet stack of smeared fuel (pellet_type_2).
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
# Specify coordinate system type
coord_type = RZ
# Import mesh file
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ../smeared.e
[]
[]
[Variables]
# Define dependent variables and initial conditions
[temp]
initial_condition = 580.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet_type_1
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
# Define functions to control power and boundary conditions
[power_history]
type = PiecewiseLinear # reads and interpolates an input file containing rod average linear power vs time
data_file = ../powerhistory.csv
scale_factor = 1
[]
[axial_peaking_factors] # reads and interpolates an input file containing the axial power profile vs time
type = PiecewiseBilinear
data_file = ../peakingfactors12.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet_type_1
add_variables = true
strain = SMALL
incremental = true
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 = SMALL
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet_type_1 # fission rate applied to the fuel (block 2) only
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet_type_1
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
a_lower = 0.00324 # mesh dependent
a_upper = 0.12184 # mesh dependent
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 1.0 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
#N235 = N235 # Activate to write N235 concentration to output file
#N238 = N238 # Activate to write N238 concentration to output file
#N239 = N239 # Activate to write N239 concentration to output file
#N240 = N240 # Activate to write N240 concentration to output file
#N241 = N241 # Activate to write N241 concentration to output file
#N242 = N242 # Activate to write N242 concentration to output file
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[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
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fis_gas_released # coupling to a postprocessor which supplies the fission gas addition
quadrature = true
contact_pressure = contact_pressure
[]
[]
[BCs]
# Define boundary conditions
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
use_displaced_mesh = false
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
use_displaced_mesh = false
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = ave_temp_interior # coupling to post processor to get gas temperature approximation
volume = gas_volume # coupling to post processor to get gas volume
material_input = fis_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.948e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
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_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
diametral_gap =160.0e-6
burnup_relocation_stop = 0.024
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[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_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
[]
[clad_thermal] # general thermal property input
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
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 8.0e7
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[centerline_temp]
type = AxisymmetricCenterlineAverageValue
boundary = 12
variable = temp
execute_on = linear
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[pellet_volume] # fuel pellet total volume
type = InternalVolume
boundary = 8
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_released] # fission gas released to plenum (moles)
type = ElementIntegralFisGasReleasedSifgrs
block = pellet_type_1
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet_type_1
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[_dt] # time step
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet_type_1
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[mid_penetration]
type = NodalVariableValue
nodeid = 584 # mesh dependent, at (0.0041, 0.0546333)
variable = penetration
[]
[central_fuel_temp]
type = NodalVariableValue
variable = temp
nodeid = 584 # mesh dependent, at (0.0041, 0.0546333)
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temp
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
[]
[center_vonMises_fuel]
type = ElementalVariableValue
elementid = 165 # mesh dependent
variable = vonmises_stress
[]
[center_hoop_clad]
type = ElementalVariableValue
elementid = 425 # mesh dependent
variable = stress_zz
[]
[center_effective_creep_strain_inner]
type = ElementalVariableValue
elementid = 425 # mesh dependent
variable = effective_creep_strain
[]
[center_effective_creep_strain_outer]
type = ElementalVariableValue
elementid = 422 # mesh dependent
variable = effective_creep_strain
[]
[effective_creep_strain]
type = ElementAverageValue
variable = effective_creep_strain
[]
[center_effective_creep_rate_inner]
type = ElementalVariableValue
elementid = 425 # mesh dependent
variable = creep_strain_rate
[]
[center_effective_creep_rate_outer]
type = ElementalVariableValue
elementid = 422 # mesh dependent
variable = creep_strain_rate
[]
[effective_creep_strain_rate]
type = ElementAverageValue
variable = creep_strain_rate
[]
[]
[VectorPostprocessors]
[clad_dia]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'tm_clad_radial_displacement'
[]
[pellet_dia]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'tm_fuel_radial_displacement'
[]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[tm_clad_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[tm_fuel_radial_displacement]
type = CSV
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/IFA_716/analysis/IFA_716_Base.i)
# This file contains all characteristics common to the entire assessment
# NOTE: This file requires information contained in subsequent files and therefore is not designed to run on its own
# Fuel material properties
total_densification = 0.0015 # (-)
# Cladding material properties
cold_work_factor = 0.2 # (-)
zircaloy_alloy_type = 4
cladding_density = 6550.0 # kg/m^3
# Cladding geometry
clad_inner_radius = 4.65e-3 # m
clad_outer_radius = 5.375e-3 # m
# Fuel geometry
num_radial = 80
num_axial = 11
a_lower = 0.001025 # m
a_upper = 0.400525 # m
fuel_inner_radius = 0 # m
fuel_outer_radius = 0.456e-02 # m
fuel_volume_ratio = 0.99140 # (-)
fuel_diameter = 9.12e-3 # m
diametral_gap = 180.0e-6 # m
# Neutronics, power, and isotope fractions
energy_per_fission = 3.28451e-11 # J/fission
fast_neutron_flux_factor = 3e13 # n/m^2-s
isotope_fraction_Pu239 = 0.0
isotope_fraction_Pu240 = 0.0
isotope_fraction_Pu241 = 0.0
isotope_fraction_Pu242 = 0.0
# Temperature conditions
initial_temperature = 293.0 # K
stress_free_temperature = 293.0 # K
# Coolant pressure ramp parameters
pressure_ramp_x = '-200 0'
pressure_ramp_y = '0 1'
coolant_pressure_ramp_factor = 3.4e6 # (-)
# Physical constants
graviational_acceleration_constant = -9.81 # m/s^2
# Plenum parameters
initial_plenum_pressure = 1.0e6 # Pa
startup_time = -200 # s
# Coolant channel parameters
inlet_pressure = 3.4e+06 # Pa
inlet_massflux = 450.0 # kg/m^2-s
rod_diameter = 10.75e-03 # m
rod_pitch = 46.e-03 # m
htc_correlation_type = 2
# Relocation
relocation_activation1 = 5000 # W/m
# Numerical options
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200 # s
n_startup_steps = 1
end_time = 60025104 # s
num_steps = 50000
dtmax = 5e5 # s
dtmin = 0.1 # s
TimeStepper_dt = 2e2 # s
TimeStepper_iteration_window = 2
TimeStepper_growth_factor = 2
TimeStepper_cutback_factor = .5
# Postprocessor parameters
burnup_scaling_factor = 950.0 # GWd/tUO2 per FIMA
time_days_scale_factor = 1.157407407e-5 # days/s
clad_elongation_nodeid = 1085
fuel_elongation_nodeid = 689
upper_TC_temperature_nodeid = 886
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = ${initial_fuel_porosity}
temperature = temperature
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_update_strategy = auto
patch_size = 10
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = ${rod_mesh_file}
[]
[]
[Variables]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[AuxVariables]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = 'pellet_type_1 pellet_type_2'
initial_condition = ${initial_grain_radius}
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = ${power_history_data_file}
scale_factor = 1e3
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = ${axial_peaking_data_file}
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = ${pressure_ramp_x}
y = ${pressure_ramp_y}
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[coolant_inlet_temperature]
type = PiecewiseLinear
data_file = ${coolant_inlet_temperature_data_file}
scale_factor = 1
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = ${add_variables_option}
strain = FINITE
[pellets]
block = 'pellet_type_1 pellet_type_2'
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_eigenstrain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = ${graviational_acceleration_constant}
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = 'pellet_type_1 pellet_type_2'
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = 'pellet_type_1 pellet_type_2'
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = ${num_radial}
num_axial = ${num_axial}
a_lower = ${a_lower}
a_upper = ${a_upper}
fuel_inner_radius = ${fuel_inner_radius}
fuel_outer_radius = ${fuel_outer_radius}
fuel_volume_ratio = ${fuel_volume_ratio}
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
[]
[]
[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 = ${fast_neutron_flux_factor}
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 'pellet_type_1 pellet_type_2'
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = ${plenum_temperature_inner_surfaces}
outer_surfaces = ${plenum_temperature_outer_surfaces}
temperature = temperature
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = ${no_y_clad_bottom_boundary}
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = ${no_y_fuel_bottom_boundary}
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = ${coolant_pressure_ramp_factor}
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = ${PlenumPressure_boundary}
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${ideal_gas_constant}
output_initial_moles = initial_moles
temperature = plenum_temp
volume = gas_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = coolant_inlet_temperature
inlet_pressure = ${inlet_pressure}
inlet_massflux = ${inlet_massflux}
rod_diameter = ${rod_diameter}
rod_pitch = ${rod_pitch}
htc_correlation_type = ${htc_correlation_type}
compute_enthalpy = true
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 'pellet_type_1 pellet_type_2'
thermal_conductivity_model = HALDEN
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ${fuel_elasticity_tensor_type}
block = 'pellet_type_1 pellet_type_2'
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 'pellet_type_1 pellet_type_2'
burnup_function = burnup
total_densification = ${total_densification}
initial_fuel_density = ${initial_fuel_density}
gas_swelling_model_type = SIFGRS
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_creep]
type = UO2CreepUpdate
block = 'pellet_type_1 pellet_type_2'
fission_rate = fission_rate
oxygen_to_metal_ratio = ${oxygen_to_metal_ratio}
[]
[fuel_thermal_expansion]
type = ${fuel_thermal_expansion_type}
block = 'pellet_type_1 pellet_type_2'
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 'pellet_type_1 pellet_type_2'
relocation_model = ESCORE_modified
burnup_function = burnup
diameter = ${fuel_diameter}
diametral_gap = ${diametral_gap}
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = ${relocation_activation1}
eigenstrain_name = ${fuel_relocation_eigenstrain_name}
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
block = 'pellet_type_1 pellet_type_2'
tangent_operator = elastic
inelastic_models = 'fuel_creep'
[]
[fuel_density]
type = StrainAdjustedDensity
block = 'pellet_type_1 pellet_type_2'
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = 'pellet_type_1 pellet_type_2'
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING_BURNUP
ig_bubble_model = NUCLEATION_RESOLUTION
diff_coeff_option = TURNBULL_D1_4D2_4D3
doping_type = CR2O3_DOPED
cr_doped_option = BEST_ESTIMATE_1773
[]
[clad_thermal]
type = ${clad_thermal_type}
block = clad
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep clad_zryplasticity'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_primary_creep = true
model_thermal_creep = true
model_irradiation_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[clad_zryplasticity]
type = ZryPlasticityUpdate
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = ${cold_work_factor}
zircaloy_alloy_type = ${zircaloy_alloy_type}
plasticity_model_type = ${plasticity_model_type}
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradiation_growth]
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 = ${cladding_density}
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = ${clad_inner_radius}
clad_outer_radius = ${clad_outer_radius}
use_coolant_channel = true
temperature = temperature
fast_neutron_flux = fast_neutron_flux
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = ${solve_type}
petsc_options = '-snes_ksp_ew'
petsc_options_iname = ${petsc_options_iname}
petsc_options_value = ${petsc_options_value}
line_search = ${line_search}
l_max_its = ${l_max_its}
l_tol = ${l_tol}
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
start_time = ${start_time}
n_startup_steps = ${n_startup_steps}
end_time = ${end_time}
num_steps = ${num_steps}
dtmax = ${dtmax}
dtmin = ${dtmin}
[TimeStepper]
type = IterationAdaptiveDT
dt = ${TimeStepper_dt}
timestep_limiting_function = power_history
max_function_change = ${TimeStepper_max_function_change}
linear_iteration_ratio = ${TimeStepper_linear_iteration_ratio}
optimal_iterations = ${TimeStepper_optimal_iterations}
iteration_window = ${TimeStepper_iteration_window}
growth_factor = ${TimeStepper_growth_factor}
cutback_factor = ${TimeStepper_cutback_factor}
force_step_every_function_point = true
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = power_history
execute_on = 'initial timestep_end'
[]
[temperature_fuel_max]
type = NodalExtremeValue
variable = temperature
block = 'pellet_type_1 pellet_type_2'
execute_on = 'initial timestep_end'
[]
[burnup_ave]
type = RodAverageBurnup
burnup_function = burnup
[]
[burnup_ave_MWdkgU]
type = ScalePostprocessor
value = burnup_ave
scaling_factor = ${burnup_scaling_factor}
[]
[temperature_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[strain_clad_hoop_max]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[gas_volume]
type = InternalVolume
boundary = '9'
execute_on = 'initial linear'
[]
[fission_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = 'pellet_type_1 pellet_type_2'
execute_on = linear
[]
[fission_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 'pellet_type_1 pellet_type_2'
execute_on = linear
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fission_gas_produced
execute_on = linear
[]
[_dt]
type = TimestepSize
execute_on = linear
[]
[nonlinear_its]
type = NumNonlinearIterations
execute_on = linear
[]
[clad_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${clad_elongation_nodeid}
[]
[fuel_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${fuel_elongation_nodeid}
[]
[upper_TC_temperature]
type = NodalVariableValue
variable = temperature
nodeid = ${upper_TC_temperature_nodeid}
[]
[time_days]
type = FunctionValuePostprocessor
function = t
scale_factor = ${time_days_scale_factor}
[]
[]
[Outputs]
perf_graph = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = 'upper_TC_temperature fgr_percent plenum_pressure strain_clad_hoop_max'
execute_on = 'FINAL'
[]
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[]
(test/tests/meso_thcond_test/sifgrs_swelling_fissiongas_graingrowth.i)
# This test is for the fuel swelling and porosity computation in the Sifgrs
# fission gas behavior model for UO2 (UO2Sifgrs).
# As complementary to the fission gas release process, the fission gas
# swelling is related to gas retention in the fuel in the form of bubbles.
# Through a direct description of the gas bubble development, the fission
# gas swelling and release are modeled as inherently coupled processes, on a
# physical basis. Only the fission gas swelling due to grain-face bubbles is
# considered.
# In a comprehensive treatment of fission gas release and fuel swelling, Sifgrs
# also incorporates empirical models for the swelling due to solid fission
# products and the fuel densification.
# Moreover, the different contributions to fuel porosity, namely, those due to
# fabrication pores, gas bubbles (thus associated with fission gas swelling),
# and sintering (densification), are computed consistently with the swelling
# calculations. Then, the fuel total porosity in each mesh location can be
# tracked (auxkernel PorosityAuxUO2), and considered in the computation of
# other relevant material properties like the fuel thermal conductivity
# (material model UO2Thermal).
# This test aims at demonstrating the above model capabilities. The considered
# case involves a single-element cubic domain, constant temperature (1400 K)
# and fission rate (1e19 f/(m**3s)), and a irradiation time of 1e8 s. The
# Sifgrs model is adopted for calculating the fission gas release and fuel
# swelling. Starting from a typical as-fabricated value of 5%, the fuel
# porosity evolves consistently with the swelling. The fuel thermal
# conductivity is calculated as coupled with porosity, which allows taking
# into account the conductivity degradation due to progressive increase of
# gaseous porosity (see also the attached file regression_tests_sifgrs.xlsx).
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = cube_111.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = 1400.
[]
[Fiss_func]
type = ParsedFunction
expression = 1.e19
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1400.
[]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[disp_z]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[fission_rate]
order = FIRST
family = LAGRANGE
[]
[burnup]
order = FIRST
family = LAGRANGE
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.05
[]
[density]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_bubble_GB]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_sl]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_dn]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_swe]
order = CONSTANT
family = MONOMIAL
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
[intra_porosity]
order = CONSTANT
family = MONOMIAL
[]
[gas_atom_conc]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
[]
[GBresistance]
order = CONSTANT
family = MONOMIAL
[]
[grain_radius]
order = CONSTANT
family = MONOMIAL
initial_condition = 5e-6
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[AuxKernels]
[frate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[brnp]
type = BurnupAux
variable = burnup
block = 1
fission_rate = fission_rate
density = 10417.
execute_on = 'initial timestep_begin'
[]
[por]
type = PorosityAuxUO2
block = 1
variable = porosity
execute_on = linear
[]
[rho]
type = MaterialRealAux
variable = density
property = density
execute_on = 'initial timestep_end'
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bubble_GB
property = deltav_v0_bubble_GB
[]
[dvv0swe]
type = MaterialRealAux
variable = deltav_v0_swe
property = volumetric_swelling_strain
[]
[thcond]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[GBCoverage]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = 'initial timestep_end'
[]
[intra_porosity]
type = MaterialRealAux
variable = intra_porosity
property = intra_porosity
[]
[gas_atom_conc]
type = MaterialRealAux
variable = gas_atom_conc
property = gas_atom_conc
[]
[deltav_v0_dn]
type = MaterialRealAux
variable = deltav_v0_dn
property = densification
[]
[deltav_v0_sl]
type = MaterialRealAux
variable = deltav_v0_sl
property = solid_swelling
[]
[rad_bbl_bdr]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = 'initial timestep_end'
[]
[GBresistance]
type = MaterialRealAux
variable = GBresistance
property = GBresistance
execute_on = 'initial timestep_end'
[]
[grain_radius]
type = GrainRadiusAux
variable = grain_radius
temperature = temp
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = temp
function = Temp_func
boundary = 1
[]
[x_disp]
type = DirichletBC
variable = disp_x
value = 0
boundary = 1
[]
[y_disp]
type = DirichletBC
variable = disp_y
value = 0
boundary = 2
[]
[z_disp]
type = DirichletBC
variable = disp_z
value = 0
boundary = 3
[]
[]
[Materials]
[swelling]
type = UO2VolumetricSwellingEigenstrain
block = 1
burnup = burnup
temperature = temp
initial_fuel_density = 10417.0
eigenstrain_name = fuel_volumetric_strain
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 1.0e-5
temperature = temp
stress_free_temperature = 1400.0
eigenstrain_name = fuel_thermal_strain
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 2.0e11
poissons_ratio = 0.3
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 10417.0
[]
[fission_gas_release_and_swelling]
type = UO2Sifgrs
block = 1
temperature = temp
fission_rate = fission_rate
burnup = burnup
initial_porosity = 0.05
[]
[fuel_thermal_meso]
type = UO2FissionGasThermal
block = 1
temperature = temp
burnup = burnup
grain_radius = grain_radius
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1.e-04
nl_abs_tol = 1.e-05
nl_rel_tol = 1.e-05
start_time = 0.
num_steps = 100
dt = 1.e+06
end_time = 1.e+08
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 1
[]
[GBCov]
type = ElementalVariableValue
variable = GBCoverage
elementid = 0
execute_on = 'initial timestep_end'
[]
[gas_atom_conc]
type = ElementalVariableValue
variable = gas_atom_conc
elementid = 0
[]
[thcond]
type = ElementalVariableValue
variable = thermal_conductivity
elementid = 0
execute_on = 'initial timestep_end'
[]
[intra_porosity]
type = ElementalVariableValue
variable = intra_porosity
elementid = 0
[]
[rad_bbl_bdr]
type = ElementalVariableValue
variable = rad_bbl_bdr
elementid = 0
execute_on = 'initial timestep_end'
[]
[GBresistance]
type = ElementalVariableValue
variable = GBresistance
elementid = 0
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
file_base = graingrowth
csv = true
[exodus]
type = Exodus
[]
[]
(test/tests/sifgrs/uo2/percolation_xfem.i)
# This is to test gas release through elements that are cut by XFEM. A 2D domain is
# used and the LineSegmentCutUserObject is used to insert a crack from the right edge
# of the domain inward toward the left edge. Because of the boundary conditions on temperature,
# gas would not normally be released to the free surface on the left side, but
# with the crack present gas release occurs.
[GlobalParams]
density = 10970
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.005
ymin = 0
ymax = 0.005
nx = 5
ny = 5
[]
[create_block2]
type = RenameBlockGenerator
input = mesh
old_block = 0
new_block = 2
[]
[free1]
type = SideSetsAroundSubdomainGenerator
new_boundary = free1
normal = '1 0 0'
block = 2
input = create_block2
[]
[subdomain1]
type = SubdomainBoundingBoxGenerator
bottom_left = '0 0 0'
top_right = '0.005 0.005 0'
block_id = 2
input = free1
[]
[]
#Create a notch in the mesh using XFEM
[XFEM]
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '0.005 0.0025 0.001 0.0025'
time_start_cut = 0.0
time_end_cut = 0.0
[]
[]
[Variables]
[temp]
initial_condition = 673.
[]
[]
[AuxVariables]
[grain_radius]
block = 2
initial_condition = 5.e-06
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = 2
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = 2
[]
[burnup]
block = 2
[]
[fission_rate]
block = 2
[]
# percolation variables
[open_coverage]
order = CONSTANT
family = MONOMIAL
[]
[open_threshold]
order = CONSTANT
family = MONOMIAL
[]
[open]
order = CONSTANT
family = MONOMIAL
[]
[cluster]
order = CONSTANT
family = MONOMIAL
[]
[percolated]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_history]
type = PiecewiseLinear
x = '0. 10800. 1.0e+8'
y = '0. 25. 25. '
scale_factor = 1000.
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0. 1.0e+8'
y = '25. 25.'
scale_factor = 1.0e+6
[]
[]
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 2
fission_rate = fission_rate # coupling to the fission_rate aux variable
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
[]
[fractcov]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
block = 2
[]
[fuel_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[brnp]
type = BurnupAux
variable = burnup
block = 2
fission_rate = fission_rate
molecular_weight = 0.270
[]
[frate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = 2
value = 5.e+14
fission_rate_function = power_history
[]
# percolation auxkernels
[open_coverage]
type = MaterialRealAux
variable = open_coverage
property = GBCoverage
[]
[open_threshold]
type = MaterialRealAux
variable = open_threshold
property = 0.3 #GB coverage at which trijunction network is percolated
[]
[open]
type = ParsedAux
variable = open
coupled_variables = 'open_coverage open_threshold'
expression = 'open_coverage-open_threshold'
[]
[cluster]
type = FeatureFloodCountAux
variable = cluster
execute_on = 'timestep_begin'
field_display = UNIQUE_REGION
flood_counter = percolate
[]
[percolated]
type = PercolationAux
variable = percolated
execute_on = 'timestep_begin'
percolation = percolate
[]
[]
# Define boundary conditions
[BCs]
[imposed_ext_temp]
type = DirichletBC
boundary = right
variable = temp
value = 673.
[]
# insulate the top and bottom of this pellet
[top_pellet]
variable = temp
value = 0.
type = NeumannBC
boundary = top
[]
[bottom_pellet]
variable = temp
value = 0.
type = NeumannBC
boundary = bottom
[]
[left_pellet]
variable = temp
value = 0.
type = NeumannBC
boundary = left
[]
[]
# Define material behavior models and input material property data
[Materials]
[fuel_thermal]
type = HeatConductionMaterial
block = 2
thermal_conductivity = 3.
specific_heat = 400.
[]
[fuel_density]
type = ParsedMaterial
block = 2
property_name = density
expression = 10970
[]
[fission_gas_release_and_swelling]
type = UO2Sifgrs
block = 2
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING
res_param_option = HETEROGENEOUS_WHITE
temperature = temp
fission_rate = fission_rate
burnup = burnup
initial_porosity = 0.
percolation_to_surface = percolated
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50.
variable = temp
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-ksp_gmres_modifiedgramschmidt'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_composite_pcs -sub_0_pc_hypre_type -sub_0_pc_hypre_boomeramg_max_iter -sub_0_pc_hypre_boomeramg_grid_sweeps_all -sub_1_sub_pc_type -pc_composite_type -ksp_type -mat_mffd_type'
petsc_options_value = '201 composite hypre,asm boomeramg 2 2 lu multiplicative fgmres ds'
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 1.0e-06
# controls for nonlinear iterations
nl_max_its = 10
nl_rel_tol = 1.0e-4
nl_abs_tol = 1.0e-8
# time control
start_time = 0.
end_time = 1.0e+8
num_steps = 5000
dtmax = 1.0e+06
dtmin = 1.0
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0
timestep_limiting_function = power_history
max_function_change = 3000.
force_step_every_function_point = true
[]
[Quadrature]
order = THIRD
[]
[]
[UserObjects]
[percolate]
type = PercolationUserObject
execute_on = 'timestep_begin'
boundaries = 'free1'
variable = open
threshold = 0.0
use_xfem = true
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
[ave_burnup_EAV]
type = ElementAverageValue
block = 2
variable = burnup
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 2
[]
[]
# Define output file(s)
[Outputs]
time_step_interval = 1
csv = true
exodus = true
color = true
print_linear_residuals = true
[console]
type = Console
max_rows = 25
output_linear = true
[]
[]
(examples/NuclearMaterialActions/TRISO/full_particle_action.i)
initial_fuel_density = 10810.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = full_particle.e
[]
[]
[AuxVariables]
[grain_radius]
initial_condition = 5.0e-6
[]
[]
[Functions]
[fast_neutron_flux]
type = ParsedFunction
expression = 1.708707e18
[]
[fission_rate]
type = ParsedFunction
expression = 7.75e19
[]
[]
[AuxKernels]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 15
secondary = 17
penalty = 1e5
model = frictionless
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 15
secondary = 17
initial_moles = initial_moles
released_gas_types = 'Kr Xe;
CO'
released_fractions = '0.153 0.847;
1'
[]
[]
[BCs]
[no_disp_x]
type = DirichletBC
variable = disp_x
boundary = xzero
value = 0.0
[]
[no_disp_y]
type = DirichletBC
variable = disp_y
boundary = yzero
value = 0.0
[]
[freesurf_temperature]
type = DirichletBC
variable = temperature
boundary = exterior
value = 1346
[]
[exterior_pressure_x]
type = Pressure
variable = disp_x
boundary = exterior
factor = 0.1e6
[]
[exterior_pressure_y]
type = Pressure
variable = disp_y
boundary = exterior
factor = 0.1e6
[]
[PlenumPressure]
[plenumPressure]
boundary = 'PyCGapBndry BufferGapBndry'
initial_pressure = 0
startup_time = 1.0e4
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = volumeGas
material_input = 'fis_gas_released co_production'
output = plenum_pressure
[]
[]
[]
[NuclearMaterials]
fission_operation = 'Normal'
physics = 'Thermal Mechanics'
initial_temperature = 1346.0
strain = FINITE
generate_output = 'hydrostatic_stress stress_xx stress_yy stress_zz
strain_xx strain_yy strain_zz stress_xy stress_yz stress_xz strain_xy
strain_yz strain_xz'
add_variables = true
stress_free_temperature = 1346.0
[ParticleFuel]
[UO2]
block = fuel
fuel_type = 'UO2'
youngs_modulus = 2.0e8
poissons_ratio = 0.345
particle_fuel_models = 'Burnup ThermalExpansion'
fission_rate_function = fission_rate
flux_factor = 1.708707e18
initial_density = 10810.0
average_grain_radius = 5e-6
initial_porosity = 0.0
[]
[]
[ParticleLayers]
fuel_type = 'UO2'
stress_free_temperature = 1346.0
[SiC]
[SiC_layer]
block = SiC
layers_models = 'ThermalExpansion IrradiationGrowth'
initial_density = 3200.0
youngs_modulus = 3.7e11
poissons_ratio = 0.13
thermal_conductivity = 13.9
specific_heat = 620.0
thermal_expansion_coeff = 4.9e-06
thermal_conductivity_model = miller
[]
[]
[IPyC]
[IPyC_layer]
block = IPyC
layers_models = 'Creep ThermalExpansion IrradiationGrowth'
youngs_modulus = 3.96e10
poissons_ratio = 0.33
initial_density = 1880.0
thermal_conductivity = 4.0
specific_heat = 720.0
thermal_expansion_coeff = 5.5e-06
[]
[]
[OPyC]
[OPyC_layer]
block = OPyC
layers_models = 'Creep ThermalExpansion IrradiationGrowth'
poissons_ratio = 0.33
youngs_modulus = 3.96e10
initial_density = 1880.0
thermal_expansion_coeff = 5.5e-6
thermal_conductivity = 4.0
specific_heat = 720.0
[]
[]
[Buffer]
[Buffer_layer]
block = buffer
layers_models = 'ThermalExpansion IrradiationGrowth'
thermal_conductivity = 0.5
thermal_expansion_coeff = 5.5e-06
specific_heat = 720.0
youngs_modulus = 2.0e8
poissons_ratio = 0.345
initial_density = 1000.0
[]
[]
[]
[]
[Dampers]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 20
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
nl_rel_tol = 5e-6
nl_abs_tol = 1e-10
nl_max_its = 15
l_tol = 1e-3
l_max_its = 50
start_time = 0.0
end_time = 3.10176e7
dtmax = 2e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 10
optimal_iterations = 8
iteration_window = 2
linear_iteration_ratio = 100
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[max_xx_IPyC]
type = ElementExtremeValue
variable = stress_xx
block = IPyC
[]
[max_yy_IPyC]
type = ElementExtremeValue
variable = stress_yy
block = IPyC
[]
[min_zz_IPyC]
type = ElementExtremeValue
variable = stress_zz
block = IPyC
value_type = min
[]
[max_xx_SiC]
type = ElementExtremeValue
variable = stress_xx
block = SiC
[]
[max_yy_SiC]
type = ElementExtremeValue
variable = stress_yy
block = SiC
[]
[min_zz_SiC]
type = ElementExtremeValue
variable = stress_zz
block = SiC
value_type = min
[]
[max_xx_OPyC]
type = ElementExtremeValue
variable = stress_xx
block = OPyC
[]
[max_yy_OPyC]
type = ElementExtremeValue
variable = stress_yy
block = OPyC
[]
[min_zz_OPyC]
type = ElementExtremeValue
variable = stress_zz
block = OPyC
value_type = min
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = fuel
execute_on = 'initial linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = fuel
execute_on = 'initial linear'
[]
[volumeTotal]
type = InternalVolume
boundary = exterior
execute_on = 'initial TIMESTEP_END'
[]
[volumeFuel]
type = InternalVolume
boundary = fuel
execute_on = 'initial TIMESTEP_END'
[]
[volumeGas]
type = InternalVolume
boundary = BufferGapVol
addition = -5.53e-11
execute_on = 'initial TIMESTEP_END'
[]
[volumeBufferShell]
type = InternalVolume
boundary = BufferGapVol
execute_on = 'initial TIMESTEP_END'
[]
[ave_temp_interior]
type = SideAverageValue
boundary = BufferGapVol
variable = temperature
execute_on = 'INITIAL TIMESTEP_END'
[]
[total_fission_rate]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = fuel
energy_per_fission = 1.0
execute_on = 'INITIAL TIMESTEP_END'
[]
[total_fissions]
type = TimeIntegratedPostprocessor
value = total_fission_rate
execute_on = 'INITIAL TIMESTEP_END'
[]
[avg_surface_temperature]
type = SideAverageValue
variable = temperature
boundary = exterior
execute_on = 'INITIAL TIMESTEP_END'
[]
[time_int_surf_temperature]
type = TimeIntegratedPostprocessor
value = avg_surface_temperature
execute_on = 'INITIAL TIMESTEP_END'
[]
[co_production]
type = CarbonMonoxideProduction
total_fissions = total_fissions
time_integrated_triso_temperature = time_int_surf_temperature
initial_enrichment = 0.14029
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
execute_on = Final
show = 'max_xx_IPyC max_yy_IPyC min_zz_IPyC max_xx_SiC max_yy_SiC min_zz_SiC co_production fis_gas_released avg_surface_temperature'
[]
[]
(test/tests/sifgrs/uo2/ad_second_stage.i)
# @Requirement F2.40
# This test is for evaluating the second stage of the FGR process in the Sifgrs fission gas behavior model. The second stage involves the calculation of the gas behavior at grain boundaries and release to the fuel rod free volume.
# UO2Sifgrs calculates the grain-boundary gas bubble kinetics, including bubble growth and coalescence driven by gas atoms and vacancies inflow at the bubbles, and release of a fraction of the grain-boundary gas after grain-boundary saturation. The saturation condition reads Fc = 0.5, with Fc being the fractional coverage of grain boundary surface by bubbles.
# This test is aimed at demonstrating how FGR commences upon attainment of the saturation condition (which occurs for this case after 8E+06 s), and how the saturation condition Fc = 0.5 is maintained from that moment on (see also attached file regression_tests_sifgrs.xlsx).
[Mesh]
[mesh]
type = FileMeshGenerator
file = 1hex8_10mm_cube.e
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1400'
[]
[Fiss_func]
type = ParsedFunction
expression = '1.e19'
[]
[]
[Variables]
[T]
initial_condition = 1400
[]
[]
[AuxVariables]
[fission_rate]
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[frcvrg]
type = ADMaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = 'initial linear'
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[UO2]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fission_gas_behavior]
type = ADUO2Sifgrs
block = 1
temperature = T
fission_rate = fission_rate
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
end_time = 5e7
[]
[Postprocessors]
[fis_gas_generated]
type = ADElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = 1
[]
[]
[Outputs]
[out]
type = Exodus
[]
[]
(test/tests/sifgrs/u3si2/polypole2_ext_fsngas.i)
# This input tests external fission gas coupling to U3Si2Sifgrs with PolyPole-2
[Mesh]
[gen]
type = ExamplePatchMeshGenerator
dim = 3
[]
[]
[Functions]
[Temp_func]
type = ParsedFunction
expression = '1700'
[]
[Fiss_func]
type = ParsedFunction
expression = '2.5e19'
[]
[]
[Variables]
[T]
initial_condition = 1700
[]
[]
[AuxVariables]
[fission_rate]
[]
[ext_gas]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
diffusion_coefficient = 1
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
value = 1
fission_rate_function = Fiss_func
execute_on = 'initial timestep_begin'
[]
[ext_gas_aux]
type = ParsedAux
variable = ext_gas
coupled_variables = 'fission_rate'
use_xyzt = true
expression = 'fission_rate * 0.3 / 6.02214076e23 * t'
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = T
function = Temp_func
boundary = 1
[]
[]
[Materials]
[fission_gas_behavior]
type = U3Si2Sifgrs
skip_bdr_model = true
temperature = T
fission_rate = fission_rate
fission_gas_conc = ext_gas
ig_diff_algorithm = POLYPOLE2
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
l_tol = 1e-4
nl_abs_tol = 1e-5
nl_rel_tol = 1e-5
start_time = 0.0
num_steps = 50
dt = 1e6
[]
[Postprocessors]
[fis_gas_generated]
type = ElementIntegralFisGasGeneratedSifgrs
block = 1
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 1
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_generated
[]
[]
[Outputs]
exodus = true
hide = 'ext_gas'
[]