- axial_gas_communicationName of the AxialGasCommunication userobject.
C++ Type:UserObjectName
Controllable:No
Description:Name of the AxialGasCommunication userobject.
- output_optionThe layered quantity that is to be output from the axial gas communication userobject.
C++ Type:MooseEnum
Controllable:No
Description:The layered quantity that is to be output from the axial gas communication userobject.
- variableThe name of the variable that this object applies to
C++ Type:AuxVariableName
Unit:(no unit assumed)
Controllable:No
Description:The name of the variable that this object applies to
AxialGasCommunicationAux
Outputs parameters of interest from the AxialGasCommunication.
Description
AxialGasCommunicationAux outputs one of the quantities computed by the AxialGasCommunication userobject. The options are layer pressure, plenum pressure, total number of moles, moles per layer, mole rate of change per layer, mole rate of change within the plenum, layer volume and layer viscosity.
Example Input Syntax
[AuxKernels<<<{"href": "../../syntax/AuxKernels/index.html"}>>>]
[total_moles]
type = AxialGasCommunicationAux<<<{"description": "Outputs parameters of interest from the AxialGasCommunication.", "href": "AxialGasCommunicationAux.html"}>>>
axial_gas_communication<<<{"description": "Name of the AxialGasCommunication userobject."}>>> = axial_gas_communication
output_option<<<{"description": "The layered quantity that is to be output from the axial gas communication userobject."}>>> = 'TOTAL_MOLES'
variable<<<{"description": "The name of the variable that this object applies to"}>>> = total_moles
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = 'TIMESTEP_BEGIN'
[]
[](test/tests/axial_gas_communication/clad_displacement_only.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
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- check_boundary_restrictedTrueWhether to check for multiple element sides on the boundary in the case of a boundary restricted, element aux variable. Setting this to false will allow contribution to a single element's elemental value(s) from multiple boundary sides on the same element (example: when the restricted boundary exists on two or more sides of an element, such as at a corner of a mesh
Default:True
C++ Type:bool
Controllable:No
Description:Whether to check for multiple element sides on the boundary in the case of a boundary restricted, element aux variable. Setting this to false will allow contribution to a single element's elemental value(s) from multiple boundary sides on the same element (example: when the restricted boundary exists on two or more sides of an element, such as at a corner of a mesh
- execute_onLINEAR TIMESTEP_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:LINEAR 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, PRE_DISPLACE
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.
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- 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
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part2_gas_communication.i)
- (test/tests/axial_gas_communication/expanding_fuel_impermeable.i)
- (test/tests/axial_gas_communication/clad_displacement_only.i)
- (test/tests/axial_gas_communication/axial_gas_communication_base.i)
- (test/tests/axial_gas_communication/cladding_burst_with_permeable_fuel.i)
- (test/tests/axial_gas_communication/temperature_increase_only.i)
- (test/tests/axial_gas_communication/dynamic_viscosity.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1_gas_communication.i)
- (test/tests/axial_gas_communication/expanding_fuel_permeable.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part3_gas_communication.i)
- (test/tests/axial_gas_communication/fission_gas_release_only.i)
- (test/tests/axial_gas_communication/split_into_two_seperate_regions.i)
- (test/tests/axial_gas_communication/cladding_burst_with_impermeable_fuel.i)
(test/tests/axial_gas_communication/clad_displacement_only.i)
# The lowest level of the clad is displaced in the x direction, increasing the volume.
# The temperature is held constant. Since it is a closed system, the number of moles
# must be constant. The pressure must decrease following the Ideal Gas Law.
# Volume = (.0051^2-.005^2)*pi*.5 + .0051^2*.3*pi = 2.6072e-5
# Temp = 1000
# R = 8.3144621815
# Pressure = 4e6
# n =PV/RT = 0.012542963362695812
#
[Functions]
[clad_displacement_function]
type = ParsedFunction
expression = 'if(t > .1,if(y = 0.011573333333333333, 2.0e-1 * t * sin(pi * y / 0.771185), 0.0),0.0)'
[]
[power]
type = PiecewiseLinear
x = '0 100'
y = '0 15000'
[]
[]
[AuxVariables]
[total_moles]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.01255660309737312643751928
[]
[]
[BCs]
[inner_clad_displacement]
type = FunctionDirichletBC
variable = disp_x
boundary = '5'
function = clad_displacement_function
[]
[outer_radius_displacement]
type = DirichletBC
variable = disp_x
boundary = '10'
value = 0.0
[]
[temp_bc]
type = DirichletBC
variable = temperature
boundary = '10 12 5'
value = 1000
[]
[]
[AuxKernels]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_BEGIN'
[]
[]
[UserObjects]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
gas_mixture = gas_mixture_thermal_contact
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
initial_pressure = 4.0e6
execute_on = 'initial TIMESTEP_END'
#debug_output = true
[]
[]
[Materials]
# This counters the initial stress from the plenum pressure,
# allowing for no compression of the fuel pellet
[ini_stress_fuel]
type = ComputeEigenstrainFromInitialStress
block = fuel
initial_stress = '-4.0e6 0 0 0 0 0 0 0 -4.0e6'
eigenstrain_name = ini_stress_fuel
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.e11
poissons_ratio = 0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 7.5e10
poissons_ratio = 0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
# automatic_scaling = true
# compute_scaling_once = false
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-3
nl_rel_tol = 1e-5
l_tol = 1e-3
l_max_its = 50
start_time = -.1
n_startup_steps = 1
dt = .1
end_time =.5
[]
[Postprocessors]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[change_over_time_moles]
type = ChangeOverTimePostprocessor
postprocessor = total_moles
change_with_respect_to_initial = true
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
[chkfile]
type = CSV
show = 'change_over_time_moles'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part2_gas_communication.i)
[GlobalParams]
density = 10452.96
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
restart_file_base = 'IFA_650_4_part1_gas_communication_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
slices_within_upper_plenum = 3
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_fuel_radius]
order = FIRST
family = LAGRANGE
[]
[gap_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_moles]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_mole_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_volume]
order = CONSTANT
family = MONOMIAL
[]
[plenum_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[total_moles]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[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 = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
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 = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
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 = fuel
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
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[layered_maximum_fuel_radius]
type = SpatialUserObjectAux
block = fuel
user_object = layered_maximum_fuel_radius
variable = layered_maximum_fuel_radius
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_pressure]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
variable = gap_layer_pressure
output_option = 'LAYER_PRESSURE'
execute_on = 'final timestep_end'
[]
[gap_layer_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_MOLES'
variable = gap_layer_moles
execute_on = 'timestep_end'
[]
[gap_layer_mole_rate]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'PLENUM_MOLE_RATE'
variable = gap_layer_mole_rate
execute_on = 'timestep_end'
[]
[gap_layer_temperature]
type = SpatialUserObjectAux
user_object = gap_layer_temperature
variable = gap_layer_temperature
execute_on = 'timestep_end'
[]
[gap_layer_volume]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_VOLUME'
variable = gap_layer_volume
execute_on = 'timestep_end'
[]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_END'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[gas_th_cond]
type = MaterialRealAux
variable = gap_thermal_conductivity
property = gap_conductivity
boundary = 10
execute_on = 'initial linear'
[]
[]
[AxialRelocation]
[relocation]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 3.17755E-06 # Addition of the volume to bring the starting total volume to 21.5cm^3 to begin the transient experiment
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = 'MASS_FRACTION PACKING_FRACTION'
use_axial_gas_communication = true
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_gas_types = 'He Ar'
initial_fractions = '0.05 0.95'
# initial_moles = initial_moles
# gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
output_gas_mixture = true
outputs = GasMixture
execution_order_group = -2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
incremental_calculation = true
execute_on = 'INITIAL LINEAR'
axial_gas_communication = axial_gas_communication
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period1]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = 172489043
end_time = 172489661
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
#axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
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 = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
#hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10452.96
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[layered_fuel_average]
type = LayeredSideAverage
variable = temperature
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
use_displaced_mesh = false
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_temperature]
type = LayeredGasGapTemperatureUserObject
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
gap_temp = gap_value
variable = temperature
boundary = '5'
distance = pt_distance
execute_on = 'INITIAL TIMESTEP_BEGIN'
execution_order_group = -1
[]
[cladding_failure_status]
type = LayeredSideAverage
variable = burst
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
execute_on = 'TIMESTEP_BEGIN'
[]
[layered_maximum_fuel_radius]
type = LayeredNodalExtremeValue
variable = 'outer_fuel_radius'
direction_min = 0.0
direction_max = 0.48
num_layers = 30
direction = y
boundary = 10
value_type = max
execute_on = 'INITIAL TIMESTEP_END'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
distance = pt_distance
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
gas_mixture = gas_mixture_thermal_contact
initial_pressure = 2.0e6
material_input = 'fis_gas_released'
execute_on = 'initial timestep_end'
debug_output = true
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[plenum_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial TIMESTEP_BEGIN'
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
[]
[gap_layer_pressure_min]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = min
execute_on = 'initial timestep_end'
[]
[gap_layer_pressure_max]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = max
execute_on = 'initial timestep_end'
[]
[gap_layer_moles]
type = ElementExtremeValue
value_type = max
variable = gap_layer_moles
execute_on = 'initial timestep_end'
[]
[plenum_mole_rate]
type = ElementAverageValue
variable = gap_layer_mole_rate
execute_on = 'initial timestep_end'
[]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.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 -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
end_time = 172489661 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '172387800 172388043 172488043 172489043 172489073 172489661'
time_dt = '1.0e04 1.0e04 10.0 5.0 3.0 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_2'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_2'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
perf_graph = true
exodus = true
[exodus2]
type = Exodus
file_base = IFA_650_4_gas_part2_out
execute_on = 'initial timestep_end'
[]
[checkpoint2]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_2]
type = CSV
#execute_on = 'FINAL'
#create_final_symlink = true
file_base = 'clad2/new'
[]
[outfile_temp_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[GasMixture]
type = CSV
file_base = 'GasMixture/'
[]
[]
(test/tests/axial_gas_communication/expanding_fuel_impermeable.i)
# The fuel is expanded and allowed to relocate, but it remains impermeable. Since it is a closed system, the number of moles
# must be constant. The pressure must increase following the Ideal Gas Law within the plenum
# Volume(i) = (.00501^2-.005^2)*pi*.5 + .0051^2*.3*pi = 2.610035177e-5
# Temp = 1000
# R = 8.3144621815
# Pressure = 4e6
# n =PV/RT = 0.01145643
#
# Volume(f) = .0051^2*.3*pi = 0.0000236563
# Temp = 1000
# R = 8.3144621815
# n = 0.01145643
# P = nRT/V = 4.02659e6
#
[Functions]
[fuel_displacement_function]
type = ParsedFunction
expression = 'if(t>0, 1e-4 * t, 0.0)'
[]
[power]
type = PiecewiseLinear
x = '0 100'
y = '15000 15000'
[]
[]
[Controls]
[second_period]
type = TimePeriod
start_time = .02
disable_objects = 'BCs::outer_fuel_radius_displacement'
execute_on = 'initial timestep_begin'
[]
[]
[AuxVariables]
[total_moles]
order = CONSTANT
family = MONOMIAL
[]
[layered_packing_fraction]
order = CONSTANT
family = MONOMIAL
[]
[]
[BCs]
[inner_clad_displacement]
type = DirichletBC
variable = disp_x
boundary = '5'
value = 0.0
[]
[outer_clad_displacement]
type = DirichletBC
variable = disp_x
boundary = '2'
value = 0.0
[]
[outer_fuel_radius_displacement]
type = FunctionDirichletBC
variable = disp_x
boundary = '10'
function = fuel_displacement_function
[]
[temp_bc]
type = DirichletBC
variable = temperature
boundary = '10 12 5'
value = 1000
[]
[]
[AuxKernels]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_BEGIN'
[]
[]
[UserObjects]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
gas_mixture = gas_mixture_thermal_contact
initial_pressure = 4.0e6
execute_on = 'initial TIMESTEP_END'
debug_output = true
[]
[]
[Materials]
# This counters the initial stress from the plenum pressure,
# allowing for no compression of the fuel pellet
[ini_stress_fuel]
type = ComputeEigenstrainFromInitialStress
block = fuel
initial_stress = '-4.0e6 0 0 0 0 0 0 0 -4.0e6'
eigenstrain_name = ini_stress_fuel
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.e11
poissons_ratio = 0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 7.5e10
poissons_ratio = 0
[]
[]
[Postprocessors]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
automatic_scaling = true
compute_scaling_once = false
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-3
nl_rel_tol = 1e-5
l_tol = 1e-3
l_max_its = 50
start_time = -.01
n_startup_steps = 1
dt = .01
end_time = .1
[]
[Outputs]
csv = true
[console]
type = Console
max_rows = 50
[]
[chkfile]
type = CSV
hide = 'burst clad_volume gas_volume maximum_power pellet_volume plenum_mole_rate plenum_pressure plenum_temp plenum_volume rod_input_power'
execute_on = 'FINAL'
[]
[]
(test/tests/axial_gas_communication/clad_displacement_only.i)
# The lowest level of the clad is displaced in the x direction, increasing the volume.
# The temperature is held constant. Since it is a closed system, the number of moles
# must be constant. The pressure must decrease following the Ideal Gas Law.
# Volume = (.0051^2-.005^2)*pi*.5 + .0051^2*.3*pi = 2.6072e-5
# Temp = 1000
# R = 8.3144621815
# Pressure = 4e6
# n =PV/RT = 0.012542963362695812
#
[Functions]
[clad_displacement_function]
type = ParsedFunction
expression = 'if(t > .1,if(y = 0.011573333333333333, 2.0e-1 * t * sin(pi * y / 0.771185), 0.0),0.0)'
[]
[power]
type = PiecewiseLinear
x = '0 100'
y = '0 15000'
[]
[]
[AuxVariables]
[total_moles]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.01255660309737312643751928
[]
[]
[BCs]
[inner_clad_displacement]
type = FunctionDirichletBC
variable = disp_x
boundary = '5'
function = clad_displacement_function
[]
[outer_radius_displacement]
type = DirichletBC
variable = disp_x
boundary = '10'
value = 0.0
[]
[temp_bc]
type = DirichletBC
variable = temperature
boundary = '10 12 5'
value = 1000
[]
[]
[AuxKernels]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_BEGIN'
[]
[]
[UserObjects]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
gas_mixture = gas_mixture_thermal_contact
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
initial_pressure = 4.0e6
execute_on = 'initial TIMESTEP_END'
#debug_output = true
[]
[]
[Materials]
# This counters the initial stress from the plenum pressure,
# allowing for no compression of the fuel pellet
[ini_stress_fuel]
type = ComputeEigenstrainFromInitialStress
block = fuel
initial_stress = '-4.0e6 0 0 0 0 0 0 0 -4.0e6'
eigenstrain_name = ini_stress_fuel
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.e11
poissons_ratio = 0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 7.5e10
poissons_ratio = 0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
# automatic_scaling = true
# compute_scaling_once = false
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-3
nl_rel_tol = 1e-5
l_tol = 1e-3
l_max_its = 50
start_time = -.1
n_startup_steps = 1
dt = .1
end_time =.5
[]
[Postprocessors]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[change_over_time_moles]
type = ChangeOverTimePostprocessor
postprocessor = total_moles
change_with_respect_to_initial = true
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
[chkfile]
type = CSV
show = 'change_over_time_moles'
execute_on = 'FINAL'
[]
[]
(test/tests/axial_gas_communication/axial_gas_communication_base.i)
# The purpose of this test is to verify the axial gas communication between
# the plenum and balloon in a fuel rod during a loss-of-coolant accident. The
# model is built upon the model by:
#
# G. Khvostov et al., "Some insights into the role of axial gas flow in fuel rod
# behaviour during the LOCA based on Halden tests and calculations with the
# FALCON-PSI code," NED, 241, p. 1500-1507, 2011.
#
# The model has two different approaches to modeling the emergent pathways that
# may form. This is controlled by selected whether bonding or not is assumed
# between the fuel and cladding.
[GlobalParams]
density = 10431.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
temperature = temperature
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
slices_within_upper_plenum = 3
pellet_outer_radius = 5e-3
pellet_bottom_coor = 0.00324
clad_gap_width = 1e-4
clad_thickness = 1e-3
fuel_height = 0.5
plenum_height = 0.3
pellet_mesh_density = customize
clad_mesh_density = customize
include_plenum = true
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1000
[]
[]
[Functions]
[burnup_function]
type = ParsedFunction
expression = 0.07
[]
[outer_pressure_function]
type = PiecewiseLinear
x = '-100 10'
y = '1.0 1.0'
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[burnup]
order = FIRST
family = LAGRANGE
[]
[burst]
order = CONSTANT
family = MONOMIAL
initial_condition = 0
[]
[layered_maximum_fuel_radius]
order = CONSTANT
family = MONOMIAL
# initial_condition = 0.005
[]
[gap_layer_pressure]
order = CONSTANT
family = MONOMIAL
initial_condition = 4e6
[]
[gap_layer_moles]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_mole_rate]
order = CONSTANT
family = MONOMIAL
initial_condition = 0
[]
[gap_layer_temperature]
initial_condition = 1000
[]
[gap_layer_volume]
[]
[plenum_layer_pressure]
order = CONSTANT
family = MONOMIAL
initial_condition = 4e6
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[gps_fuel]
add_scalar_variables = true
generate_output = 'strain_yy'
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
block = fuel
automatic_eigenstrain_names = true
decomposition_method = EigenSolution
mesh_generator = layered1D_mesh
[]
[gps_clad]
add_scalar_variables = true
generate_output = 'strain_yy'
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
block = clad
decomposition_method = EigenSolution
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup_function
execute_on = 'initial linear'
[]
[layered_maximum_fuel_radius]
type = SpatialUserObjectAux
block = fuel
user_object = layered_maximum_fuel_radius
variable = layered_maximum_fuel_radius
execute_on = 'TIMESTEP_END'
[]
[gap_layer_pressure]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
variable = gap_layer_pressure
output_option = 'LAYER_PRESSURE'
execute_on = 'final timestep_end'
[]
[gap_layer_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_MOLES'
variable = gap_layer_moles
execute_on = 'timestep_end'
[]
[gap_layer_mole_rate]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'PLENUM_MOLE_RATE'
variable = gap_layer_mole_rate
execute_on = 'timestep_end'
[]
[gap_layer_temperature]
type = SpatialUserObjectAux
user_object = gap_layer_temperature
variable = gap_layer_temperature
execute_on = 'timestep_end'
[]
[gap_layer_volume]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_VOLUME'
variable = gap_layer_volume
execute_on = 'timestep_end'
[]
[]
[AxialRelocation]
[relocation]
rod_ave_lin_pow = power
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = 'MASS_FRACTION PACKING_FRACTION'
mesh_generator = layered1D_mesh
nonrelocatable_fuel_fraction = 1 #Hold
fragment_packing_fraction = 1
pulver_packing_fraction = 1
use_axial_gas_communication = true
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_gas_types = 'He'
initial_fractions = '1'
#initial_moles = initial_moles
# gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
output_gas_mixture = true
outputs = GasMixture
execution_order_group = -2
[]
[]
[BCs]
[outersurface]
type = Pressure
boundary = '2'
variable = disp_x
factor = 101325.0
function = outer_pressure_function
[]
[outer_temperature]
type = DirichletBC
boundary = '2'
variable = temperature
value = 273
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 4.0e6
initial_temperature = 1000
startup_time = -1
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
output = 'plenum_pressure'
incremental_calculation = true
execute_on = 'INITIAL TIMESTEP_END'
axial_gas_communication = axial_gas_communication
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Materials]
[fuel_thermal]
type = HeatConductionMaterial
block = fuel
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.e11
poissons_ratio = .345
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10431.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = clad
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'gap_layer_pressure_max < 101325.01'
execute_on = 'TIMESTEP_END'
[]
[layered_fuel_average]
type = LayeredSideAverage
variable = temperature
direction = y
num_layers = 30
boundary = 2
direction_min = 0.00324
direction_max = 0.50324
use_displaced_mesh = false
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_temperature]
type = LayeredGasGapTemperatureUserObject
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
gap_temp = gap_value
variable = temperature
boundary = '5'
distance = pt_distance
execute_on = 'INITIAL TIMESTEP_BEGIN'
execution_order_group = -1
[]
[cladding_failure_status]
type = LayeredSideAverage
variable = burst
direction = y
num_layers = 30
direction_min = 0.00324
direction_max = 0.50324
boundary = 2
execute_on = 'TIMESTEP_BEGIN'
[]
[layered_maximum_fuel_radius]
type = LayeredNodalExtremeValue
variable = 'outer_fuel_radius'
direction_min = 0.00324
direction_max = 0.50324
num_layers = 30
direction = y
boundary = 10
value_type = max
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Postprocessors]
[gap_layer_pressure_max]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = max
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'Initial TIMESTEP_END'
[]
[plenum_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial TIMESTEP_BEGIN'
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
[]
[gap_layer_pressure_min]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = min
execute_on = 'initial timestep_end'
[]
[plenum_mole_rate]
type = ElementAverageValue
variable = gap_layer_mole_rate
execute_on = 'initial timestep_end'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
# automatic_scaling = true
# compute_scaling_once = false
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-3
nl_rel_tol = 1e-5
l_tol = 1e-3
l_max_its = 50
start_time = -.1
n_startup_steps = 1
dt = .1
end_time = 1
[]
[Outputs]
[GasMixture]
type = CSV
file_base = 'GasMixture/'
[]
[]
(test/tests/axial_gas_communication/cladding_burst_with_permeable_fuel.i)
# The fuel is expanded and allowed to relocate, but it remains impermeable. Since it is a closed system, the number of moles
# must be constant. The pressure must increase following the Ideal Gas Law within the plenum
# Volume(i) = (.0059^2-.005^2)*pi*.5 + .00501^2*.3*pi = 0.0000482172
# Temp = 1000
# R = 8.3144621815
# Pressure = 4e6
# n =PV/RT = 0.02319677
#
# This matches the results from a Mathematica simulation. Reaching true equalibrium takes
#
[Functions]
[power]
type = PiecewiseLinear
x = '0 100'
y = '0 15000'
[]
[burst_function]
type = ParsedFunction # Failure at the lowest fuel-cladding layer
expression = 'if(t > .01,if( y = 0.028240000000000001, 1.0, 0.0),0.0)'
[]
[]
[AuxVariables]
[total_moles]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.01309558663687155
[]
[layered_packing_fraction]
order = CONSTANT
family = MONOMIAL
[]
[]
[BCs]
[inner_clad_displacement]
type = DirichletBC
variable = disp_x
boundary = '5'
value = 0.0
[]
[outer_clad_displacement]
type = DirichletBC
variable = disp_x
boundary = '2'
value = 0.0
[]
[outer_fuel_radius_displacement]
type = DirichletBC
variable = disp_x
boundary = '10'
value = 0.0
[]
[temp_bc]
type = DirichletBC
variable = temperature
boundary = '8 12 5'
value = 1000
[]
[]
[AuxKernels]
[bursted]
type = FunctionAux
variable = burst
function = burst_function
boundary = 2
execute_on = 'initial TIMESTEP_BEGIN'
[]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_END'
[]
[]
[UserObjects]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 13
distance = pt_distance
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
gas_mixture = gas_mixture_thermal_contact
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
initial_pressure = 4.0e6
execute_on = 'initial TIMESTEP_END'
#debug_output = true
[]
[]
[Materials]
# This counters the initial stress from the plenum pressure,
# allowing for no compression of the fuel pellet
[ini_stress_fuel]
type = ComputeEigenstrainFromInitialStress
block = fuel
initial_stress = '-4.213036e6 0 0 0 0 0 0 0 -4.213036e6'
eigenstrain_name = ini_stress_fuel
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.e11
poissons_ratio = 0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 7.5e10
poissons_ratio = 0
[]
[]
[Postprocessors]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
automatic_scaling = true
compute_scaling_once = false
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-3
nl_rel_tol = 1e-5
l_tol = 1e-3
l_max_its = 50
start_time = -.2
n_startup_steps = 2
dt = .1
end_time = 1 #50
[]
[Outputs]
csv = true
exodus = true
[chkfile]
type = CSV
hide = 'burst clad_volume gas_volume maximum_power pellet_volume plenum_mole_rate plenum_pressure plenum_temp plenum_volume rod_input_power'
execute_on = 'FINAL'
[]
[]
(test/tests/axial_gas_communication/temperature_increase_only.i)
# The temperature is increased as a function on axial position while the pressure is held constant.
# Since it is a closed system, the number of moles must be constant while the volume increases.
#
# Following the ideal gas law:
#
# Volume = (.0051^2-.005^2)*pi*.5 + .0051^2*.3*pi = 2.610035177e-5
# Temp = 1000
# R = 8.31446261815324
# Pressure = 4e6
# n =PV/RT = 0.0125565954649452
#
[Functions]
[clad_displacement_function]
type = ParsedFunction
symbol_names = 'R_clad T_i R n h_plenum h_fuel P R_fuel'
symbol_values = '.0051 1000 8.31446261815324 0.01255660309737312643751928 .3 .5 4e6 .005'
expression = 'displacement:=sqrt(n*R*(1+t)*T_i/P/3.14159265359/(h_plenum+h_fuel)+R_fuel*R_fuel*h_fuel/(h_plenum+h_fuel))-R_clad; if(t > 0.0,displacement, 0.0)'
[]
[temp_function]
type = ParsedFunction
expression = 'if(t>0.0, 1000+1000*t, 1000)'
[]
[power]
type = PiecewiseLinear
x = '0 100'
y = '0 15000'
[]
[]
[AuxVariables]
[total_moles]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.01255660309737312643751928
[]
[disp_y]
[]
[disp_z]
[]
[]
[BCs]
[temp_bc]
type = FunctionDirichletBC
variable = temperature
function = temp_function
boundary = '10 12 5'
[]
[inner_clad_displacement]
type = FunctionDirichletBC
variable = disp_x
boundary = '5'
function = clad_displacement_function
preset = false
[]
[fuel_radius_displacement]
type = DirichletBC
variable = disp_x
boundary = '10 12'
value = 0.0
[]
[]
[AuxKernels]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_END'
[]
[]
[UserObjects]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 30
direction_min = 0.00324
direction_max = 0.50324
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 30
direction_min = 0.00324
direction_max = 0.50324
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
# distance = pt_distance
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
gas_mixture = gas_mixture_thermal_contact
initial_pressure = 4.0e6
execute_on = 'initial TIMESTEP_END'
debug_output = true
[]
[]
[Materials]
# This counters the initial stress from the plenum pressure,
# allowing for no compression of the fuel pellet
[ini_stress_fuel]
type = ComputeEigenstrainFromInitialStress
block = fuel
initial_stress = '-4.0e6 0 0 0 0 0 0 0 -4.0e6'
eigenstrain_name = ini_stress_fuel
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.e11
poissons_ratio = 0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 7.5e10
poissons_ratio = 0
[]
[]
[Postprocessors]
[displace_clad]
type = NodalExtremeValue
boundary = 5
variable = disp_x
[]
[displace]
type = NodalExtremeValue
variable = disp_y
[]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_END'
[]
[change_over_time_moles]
type = ChangeOverTimePostprocessor
postprocessor = total_moles
change_with_respect_to_initial = true
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
csv = true
exodus = true
[chkfile]
type = CSV
show = 'change_over_time_moles'
execute_on = 'FINAL'
[]
[]
(test/tests/axial_gas_communication/dynamic_viscosity.i)
# The lowest level of the clad is displaced in the x direction, increasing the volume.
# The temperature is held constant. Since it is a closed system, the number of moles
# must be constant. The pressure must decrease following the Ideal Gas Law. The fuel
# is allowed to relocate, which makes the fuel permeable, opening a new path for the gas
# to escape after the cladding is breached.
# Volume = (.0055^2-.005^2)*pi*.5 + .0055^2*.3*pi = 0.0000367566
# Temp = 1000
# R = 8.3144621815
# Pressure = 4e6
# n =PV/RT = 0.017683228689781283
#
# This test is for the dynamic viscosity of the gas within each layer. The gas is helium and
# data is from the NIST Chemistry WebBook
# Temp (K) | Pressure (MPa) | Viscosity (Pa*s)
# 1000 | 3.5 | 4.6195e-5
# 1000 | 3.6 | 4.6196e-5
# 1000 | 3.7 | 4.6197e-5
# 1000 | 3.8 | 4.6198e-5
# 1000 | 3.9 | 4.6199e-5
# 1000 | 4.0 | 4.6200e-5
[GlobalParams]
density = 10431.0
order = SECOND
family = LAGRANGE
displacements = 'disp_x'
temperature = temperature
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
slices_within_upper_plenum = 3
pellet_outer_radius = 5e-3
pellet_bottom_coor = 0.00324
clad_gap_width = 5e-4
clad_thickness = 1e-3
fuel_height = 0.5
plenum_height = 0.3
pellet_mesh_density = customize
clad_mesh_density = customize
include_plenum = true
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 1000
[]
[]
[Functions]
[burnup_function]
type = ParsedFunction
expression = 0.07
[]
[outer_pressure_function]
type = PiecewiseLinear
x = '-100 10'
y = '1.0 1.0'
[]
[fuel_displacement_function]
type = ParsedFunction
expression = 'if(t>0, if(y = 0.26157333333333332, 1e-2 * t, 0.0),0.0)'
[]
[power]
type = PiecewiseLinear
x = '0 100'
y = '15000 15000'
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[burnup]
order = FIRST
family = LAGRANGE
[]
[burst]
order = CONSTANT
family = MONOMIAL
initial_condition = 0
[]
[layered_maximum_fuel_radius]
order = CONSTANT
family = MONOMIAL
# initial_condition = 0.005
[]
[gap_layer_pressure]
order = CONSTANT
family = MONOMIAL
initial_condition = 4e6
[]
[gap_layer_moles]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_mole_rate]
order = CONSTANT
family = MONOMIAL
initial_condition = 0
[]
[gap_layer_temperature]
initial_condition = 1000
[]
[gap_layer_volume]
[]
[plenum_layer_pressure]
order = CONSTANT
family = MONOMIAL
initial_condition = 4e6
[]
[total_moles]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.017683228689781283
[]
[layered_packing_fraction]
order = CONSTANT
family = MONOMIAL
[]
[layer_viscosity]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[gps_fuel]
add_scalar_variables = true
generate_output = 'strain_yy'
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
block = fuel
automatic_eigenstrain_names = true
initial_eigenstrain_name = 'ini_stress'
decomposition_method = EigenSolution
mesh_generator = layered1D_mesh
[]
[gps_clad]
add_scalar_variables = true
generate_output = 'strain_yy'
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
block = clad
decomposition_method = EigenSolution
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup_function
execute_on = 'initial linear'
[]
[layered_maximum_fuel_radius]
type = SpatialUserObjectAux
block = fuel
user_object = layered_maximum_fuel_radius
variable = layered_maximum_fuel_radius
execute_on = 'TIMESTEP_END'
[]
[gap_layer_pressure]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
variable = gap_layer_pressure
output_option = 'LAYER_PRESSURE'
execute_on = 'final timestep_end'
[]
[gap_layer_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_MOLES'
variable = gap_layer_moles
execute_on = 'timestep_end'
[]
[gap_layer_mole_rate]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'PLENUM_MOLE_RATE'
variable = gap_layer_mole_rate
execute_on = 'timestep_end'
[]
[gap_layer_temperature]
type = SpatialUserObjectAux
user_object = gap_layer_temperature
variable = gap_layer_temperature
execute_on = 'timestep_end'
[]
[gap_layer_volume]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_VOLUME'
variable = gap_layer_volume
execute_on = 'timestep_end'
[]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_END'
[]
[layer_viscosity]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_VISCOSITY'
variable = layer_viscosity
execute_on = 'timestep_end'
[]
[]
[AxialRelocation]
[relocation]
rod_ave_lin_pow = power
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = 'MASS_FRACTION PACKING_FRACTION'
mesh_generator = layered1D_mesh
gap_thickness_threshold = 2e-6
nonrelocatable_fuel_fraction = 0.01
fragment_packing_fraction = 1
pulver_packing_fraction = 1
use_axial_gas_communication = true
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_gas_types = 'He'
initial_fractions = '1'
#initial_moles = initial_moles
# gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
output_gas_mixture = true
outputs = GasMixture
execution_order_group = -2
[]
[]
[BCs]
[outersurface]
type = Pressure
boundary = '2'
variable = disp_x
factor = 101325.0
function = outer_pressure_function
[]
[outer_temperature]
type = DirichletBC
boundary = '2'
variable = temperature
value = 273
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[fuel_layer_displacement]
type = FunctionDirichletBC
variable = disp_x
boundary = '10'
function = fuel_displacement_function
[]
[temp_bc]
type = DirichletBC
variable = temperature
boundary = '10 12 5'
value = 1000
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 4.0e6
initial_temperature = 1000
startup_time = -1
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
output = 'plenum_pressure'
incremental_calculation = true
execute_on = 'INITIAL TIMESTEP_END'
axial_gas_communication = axial_gas_communication
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Materials]
[fuel_thermal]
type = HeatConductionMaterial
block = fuel
thermal_conductivity = 1.0
specific_heat = 1.0
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = fuel
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10431.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = clad
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
# This counters the initial stress from the plenum pressure,
# allowing for no compression of the fuel pellet
[ini_stress]
type = ComputeEigenstrainFromInitialStress
block = fuel
initial_stress = '-4.0e6 0 0 0 0 0 0 0 -4.0e6'
eigenstrain_name = ini_stress
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.e11
poissons_ratio = 0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 7.5e10
poissons_ratio = 0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'gap_layer_pressure_max < 101325.01'
execute_on = 'TIMESTEP_END'
[]
[layered_fuel_average]
type = LayeredSideAverage
variable = temperature
direction = y
num_layers = 30
boundary = 2
direction_min = 0.00324
direction_max = 0.50324
use_displaced_mesh = false
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_temperature]
type = LayeredGasGapTemperatureUserObject
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
gap_temp = gap_value
variable = temperature
boundary = '5'
distance = pt_distance
execute_on = 'INITIAL TIMESTEP_BEGIN'
execution_order_group = -1
[]
[cladding_failure_status]
type = LayeredSideAverage
variable = burst
direction = y
boundary = 2
direction_min = 0.00324
direction_max = 0.50324
num_layers = 30
execute_on = 'TIMESTEP_BEGIN'
[]
[layered_maximum_fuel_radius]
type = LayeredNodalExtremeValue
variable = 'outer_fuel_radius'
direction_min = 0.00324
direction_max = 0.50324
num_layers = 30
direction = y
boundary = 10
value_type = max
execute_on = 'INITIAL TIMESTEP_END'
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 30
direction_min = 0.00324
direction_max = 0.50324
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 30
direction_min = 0.00324
direction_max = 0.50324
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
# distance = pt_distance
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
gas_mixture = gas_mixture_thermal_contact
initial_pressure = 4.0e6
execute_on = 'initial TIMESTEP_END'
debug_output = true
[]
[]
[Postprocessors]
[gap_layer_pressure_max]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = max
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'Initial TIMESTEP_END'
[]
[plenum_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial TIMESTEP_BEGIN'
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
[]
[gap_layer_pressure_min]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = min
execute_on = 'initial timestep_end'
[]
[plenum_mole_rate]
type = ElementAverageValue
variable = gap_layer_mole_rate
execute_on = 'initial timestep_end'
[]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_END'
[]
[fuel_outer_disp_x]
type = NodalExtremeValue
boundary = 10
variable = disp_x
execute_on = 'initial timestep_end'
[]
[cladding_outer_disp_x]
type = NodalExtremeValue
boundary = 2
variable = disp_x
execute_on = 'initial timestep_end'
[]
[viscosity]
type = ElementExtremeValue
value_type = max
variable = layer_viscosity
execute_on = 'timestep_end'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
automatic_scaling = true
compute_scaling_once = false
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-3
nl_rel_tol = 1e-5
l_tol = 1e-3
l_max_its = 50
start_time = -.01
n_startup_steps = 1
dt = .01
end_time = .2
[]
[Outputs]
csv = true
exodus = true
[console]
type = Console
max_rows = 50
[]
[chkfile]
type = CSV
show = 'viscosity'
execute_on = 'FINAL'
[]
[GasMixture]
type = CSV
file_base = 'GasMixture/'
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1_gas_communication.i)
[GlobalParams]
density = 10452.96
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
slices_within_upper_plenum = 3
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 295.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 5.0e-6
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_fuel_radius]
order = FIRST
family = LAGRANGE
[]
[gap_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_moles]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_mole_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_volume]
order = CONSTANT
family = MONOMIAL
[]
[plenum_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[total_moles]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[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 = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
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 = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
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 = fuel
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
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[layered_maximum_fuel_radius]
type = SpatialUserObjectAux
block = fuel
user_object = layered_maximum_fuel_radius
variable = layered_maximum_fuel_radius
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_pressure]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
variable = gap_layer_pressure
output_option = 'LAYER_PRESSURE'
execute_on = 'final timestep_end'
[]
[gap_layer_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_MOLES'
variable = gap_layer_moles
execute_on = 'timestep_end'
[]
[gap_layer_mole_rate]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'PLENUM_MOLE_RATE'
variable = gap_layer_mole_rate
execute_on = 'timestep_end'
[]
[gap_layer_temperature]
type = SpatialUserObjectAux
user_object = gap_layer_temperature
variable = gap_layer_temperature
execute_on = 'timestep_end'
[]
[gap_layer_volume]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_VOLUME'
variable = gap_layer_volume
execute_on = 'timestep_end'
[]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_END'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[gas_th_cond]
type = MaterialRealAux
variable = gap_thermal_conductivity
property = gap_conductivity
boundary = 10
execute_on = 'initial linear'
[]
[]
[AxialRelocation]
[relocation]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = 'MASS_FRACTION PACKING_FRACTION'
use_axial_gas_communication = true
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = 0.0170917878663391
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
output_gas_mixture = true
outputs = GasMixture
execution_order_group = -2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
incremental_calculation = true
execute_on = 'INITIAL LINEAR'
axial_gas_communication = axial_gas_communication
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period0]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = -200.0
end_time = 172387800.0
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
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 = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10452.96
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[layered_fuel_average]
type = LayeredSideAverage
variable = temperature
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
use_displaced_mesh = false
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_temperature]
type = LayeredGasGapTemperatureUserObject
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
gap_temp = gap_value
variable = temperature
boundary = '5'
distance = pt_distance
execute_on = 'INITIAL TIMESTEP_BEGIN'
execution_order_group = -1
[]
[cladding_failure_status]
type = LayeredSideAverage
variable = burst
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
execute_on = 'TIMESTEP_BEGIN'
[]
[layered_maximum_fuel_radius]
type = LayeredNodalExtremeValue
variable = 'outer_fuel_radius'
direction_min = 0.0
direction_max = 0.48
num_layers = 30
direction = y
boundary = 10
value_type = max
execute_on = 'INITIAL TIMESTEP_END'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
distance = pt_distance
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
gas_mixture = gas_mixture_thermal_contact
initial_pressure = 2.0e6
material_input = 'fis_gas_released'
execute_on = 'initial timestep_end'
debug_output = true
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[plenum_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial TIMESTEP_BEGIN'
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
[]
[gap_layer_pressure_min]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = min
execute_on = 'initial timestep_end'
[]
[gap_layer_pressure_max]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = max
execute_on = 'initial timestep_end'
[]
[gap_layer_moles]
type = ElementExtremeValue
value_type = max
variable = gap_layer_moles
execute_on = 'initial timestep_end'
[]
[plenum_mole_rate]
type = ElementAverageValue
variable = gap_layer_mole_rate
execute_on = 'initial timestep_end'
[]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.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 -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
start_time = -200.0
end_time = 172387800 # End base irradiation
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '172387800 172388043 172488043 172489043 172489073 172489661'
time_dt = '1.0e04 1.0e04 10.0 5.0 0.5 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_1'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
perf_graph = true
exodus = true
[checkpoint]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_1]
type = CSV
# execute_on = 'FINAL'
# create_final_symlink = true
file_base = 'clad/new'
[]
[outfile_temp_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[GasMixture]
type = CSV
file_base = 'GasMixture/'
[]
[]
(test/tests/axial_gas_communication/expanding_fuel_permeable.i)
# The fuel is expanded and allowed to relocate, but it remains impermeable. Since it is a closed system, the number of moles
# must be constant. The pressure must increase following the Ideal Gas Law within the plenum
# Volume(i) = (.0059^2-.005^2)*pi*.5 + .00501^2*.3*pi = 0.0000482172
# Temp = 1000
# R = 8.3144621815
# Pressure = 4e6
# n =PV/RT = 0.02319677
#
[Functions]
[fuel_displacement_function]
type = ParsedFunction
expression = 'if(t>0, 5e-3*t,0.0)'
[]
[power]
type = PiecewiseLinear
x = '0 100'
y = '15000 15000'
[]
[]
[Controls]
[second_period]
type = TimePeriod
start_time = .19
disable_objects = 'BCs::outer_fuel_radius_displacement'
execute_on = 'initial timestep_begin'
[]
[]
[AuxVariables]
[total_moles]
order = CONSTANT
family = MONOMIAL
[]
[layered_packing_fraction]
order = CONSTANT
family = MONOMIAL
[]
[]
[BCs]
[inner_clad_displacement]
type = DirichletBC
variable = disp_x
boundary = '5'
value = 0.0
[]
[outer_clad_displacement]
type = DirichletBC
variable = disp_x
boundary = '2'
value = 0.0
[]
[outer_fuel_radius_displacement]
type = FunctionDirichletBC
variable = disp_x
boundary = '10'
function = fuel_displacement_function
[]
[temp_bc]
type = DirichletBC
variable = temperature
boundary = '10 12 5'
value = 1000
[]
[]
[AuxKernels]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_BEGIN'
[]
[]
[UserObjects]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
gas_mixture = gas_mixture_thermal_contact
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
initial_pressure = 4.0e6
execute_on = 'initial TIMESTEP_END'
# debug_output = true
[]
[]
[Materials]
# This counters the initial stress from the plenum pressure,
# allowing for no compression of the fuel pellet
[ini_stress_fuel]
type = ComputeEigenstrainFromInitialStress
block = fuel
initial_stress = '-4.0e6 0 0 0 0 0 0 0 -4.0e6'
eigenstrain_name = ini_stress_fuel
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.e11
poissons_ratio = 0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 7.5e10
poissons_ratio = 0
[]
[]
[Postprocessors]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
automatic_scaling = true
compute_scaling_once = false
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-3
nl_rel_tol = 1e-5
l_tol = 1e-3
l_max_its = 50
start_time = -.01
n_startup_steps = 1
dt = .01
end_time = .22
[]
[Outputs]
csv = true
[console]
type = Console
max_rows = 50
[]
[chkfile]
type = CSV
hide = 'burst clad_volume gas_volume maximum_power pellet_volume plenum_mole_rate plenum_pressure plenum_temp plenum_volume rod_input_power'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part3_gas_communication.i)
[GlobalParams]
density = 10452.96
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
restart_file_base = 'IFA_650_4_part2_gas_communication_checkpoint2_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
slices_within_upper_plenum = 3
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_fuel_radius]
order = FIRST
family = LAGRANGE
[]
[gap_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_moles]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_mole_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_volume]
order = CONSTANT
family = MONOMIAL
[]
[plenum_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[total_moles]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[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 = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
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 = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
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 = fuel
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
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[layered_maximum_fuel_radius]
type = SpatialUserObjectAux
block = fuel
user_object = layered_maximum_fuel_radius
variable = layered_maximum_fuel_radius
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_pressure]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
variable = gap_layer_pressure
output_option = 'LAYER_PRESSURE'
execute_on = 'final timestep_end'
[]
[gap_layer_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_MOLES'
variable = gap_layer_moles
execute_on = 'timestep_end'
[]
[gap_layer_mole_rate]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'PLENUM_MOLE_RATE'
variable = gap_layer_mole_rate
execute_on = 'timestep_end'
[]
[gap_layer_temperature]
type = SpatialUserObjectAux
user_object = gap_layer_temperature
variable = gap_layer_temperature
execute_on = 'timestep_end'
[]
[gap_layer_volume]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_VOLUME'
variable = gap_layer_volume
execute_on = 'timestep_end'
[]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_END'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[gas_th_cond]
type = MaterialRealAux
variable = gap_thermal_conductivity
property = gap_conductivity
boundary = 10
execute_on = 'initial linear'
[]
[]
[AxialRelocation]
[relocation]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 3.17755E-06 # Addition of the volume to bring the starting total volume to 21.5cm^3 to begin the transient experiment
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = 'MASS_FRACTION PACKING_FRACTION'
use_axial_gas_communication = true
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_gas_types = 'He Ar'
initial_fractions = '0.05 0.95'
# initial_moles = initial_moles
# gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
output_gas_mixture = true
outputs = GasMixture
execution_order_group = -2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
incremental_calculation = true
execute_on = 'INITIAL LINEAR'
axial_gas_communication = axial_gas_communication
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
#axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
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 = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
#hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10452.96
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'gap_layer_pressure_max < 101325.01'
execute_on = 'TIMESTEP_END'
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[layered_fuel_average]
type = LayeredSideAverage
variable = temperature
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
use_displaced_mesh = false
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_temperature]
type = LayeredGasGapTemperatureUserObject
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
gap_temp = gap_value
variable = temperature
boundary = '5'
distance = pt_distance
execute_on = 'INITIAL TIMESTEP_BEGIN'
execution_order_group = -1
[]
[cladding_failure_status]
type = LayeredSideAverage
variable = burst
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
execute_on = 'TIMESTEP_BEGIN'
[]
[layered_maximum_fuel_radius]
type = LayeredNodalExtremeValue
variable = 'outer_fuel_radius'
direction_min = 0.0
direction_max = 0.48
num_layers = 30
direction = y
boundary = 10
value_type = max
execute_on = 'INITIAL TIMESTEP_END'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
distance = pt_distance
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
gas_mixture = gas_mixture_thermal_contact
initial_pressure = 2.0e6
equilibrium_pressure = 7.5e5
material_input = 'fis_gas_released'
execute_on = 'initial timestep_end'
debug_output = true
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[plenum_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial TIMESTEP_BEGIN'
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
[]
[gap_layer_pressure_min]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = min
execute_on = 'initial timestep_end'
[]
[gap_layer_pressure_max]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = max
execute_on = 'initial timestep_end'
[]
[gap_layer_moles]
type = ElementExtremeValue
value_type = max
variable = gap_layer_moles
execute_on = 'initial timestep_end'
[]
[plenum_mole_rate]
type = ElementAverageValue
variable = gap_layer_mole_rate
execute_on = 'initial timestep_end'
[]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[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 = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dt = .1
end_time = 172489651 # End
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_3'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_3'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
exodus = true
[exodus3]
type = Exodus
file_base = IFA_650_4_gas_part3_out
execute_on = 'initial timestep_end'
[]
[checkpoint3]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_3]
type = CSV
#execute_on = 'FINAL'
#create_final_symlink = true
file_base = 'clad3/new'
[]
[outfile_temp_3]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_3]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[GasMixture]
type = CSV
file_base = 'GasMixture/'
[]
[]
(test/tests/axial_gas_communication/fission_gas_release_only.i)
# Additional moles are released into the closed volume system at constant temperature and volume,
# increasing the pressure following the Ideal Gas Law.
#
# Volume = (.0051^2-.005^2)*pi*.5 + .0051^2*.3*pi = 2.6072e-05
# Temp = 1000
# R = 8.31446261815324
# P_0 = 4e6
# n0 = PV/RT = 0.012542967614083599
# n(t) = 2e-5 * t * sin(2*pi/0.771185)
# ->n(.6)=1.148698e-05 + 0.0125565954649452 = 0.012568090079947709000000000 => P = n(.6)RT/V = 4.00366e6
# ->n(.7)=1.340148e-05 + 0.012568090079947709000000000 = 0.012581491559618054490000000 => P = n(.7)RT/V = 4.00793e6
# ->n(.8)=1.531598e-05 + 0.012581491559618054490000000 = 0.012596807559618054490000000 => P = n(.8)RT/V = 4.01281e6
# ->n(.9)=1.723047e-05 + 0.012596807559618054490000000 = 0.012614038059618054490000000 => P = n(.9)RT/V = 4.0183e6
# ->n(1.)=1.914497e-05 + 0.012614038059618054490000000 = 0.012633183059618054490000000 => P = n(1.)RT/V = 4.02439e6
#
[Functions]
[fission_gas]
type = ParsedFunction
expression = 'if(t > .5, 2.0e-5 * t * sin(pi * 2 / 0.771185),0.0)'
[]
[power]
type = PiecewiseLinear
x = '0 100'
y = '0 15000'
[]
[]
[AuxVariables]
[fis_gas_released]
order = CONSTANT
family = MONOMIAL
initial_condition = 0
[]
[total_moles]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0125566030973731
[]
[]
[BCs]
[outer_radius_displacement]
type = DirichletBC
variable = disp_x
boundary = '10 12 5'
value = 0.0
[]
[temp_bc]
type = DirichletBC
variable = temperature
boundary = '10 12 5'
value = 1000
[]
[]
[AuxKernels]
[fis_gas_released]
type = MaterialRealAux
variable = fis_gas_released
property = fis_gas_released
execute_on = 'TIMESTEP_BEGIN'
[]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_END'
[]
[]
[UserObjects]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 30
direction_min = 0.00324
direction_max = 0.50324
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 30
direction_min = 0.00324
direction_max = 0.50324
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
gas_mixture = gas_mixture_thermal_contact
initial_pressure = 4.0e6
material_input = 'fis_gas_released'
execute_on = 'initial TIMESTEP_END'
debug_output = true
[]
[]
[Materials]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.e11
poissons_ratio = 0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 7.5e10
poissons_ratio = 0
[]
[fission_gas]
type = GenericFunctionMaterial
prop_names = fis_gas_released
prop_values = fission_gas
[]
[]
[Postprocessors]
[fis_gas_released]
type = ElementAverageMaterialProperty
mat_prop = fis_gas_released
execute_on = 'initial timestep_end'
[]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Outputs]
csv = true
[chkfile]
type = CSV
execute_on = 'TIMESTEP_END'
[]
[]
(test/tests/axial_gas_communication/split_into_two_seperate_regions.i)
# The lowest level of the clad is displaced in the x direction, increasing the volume.
# The temperature is held constant. Since it is a closed system, the number of moles
# must be constant. The pressure must decrease following the Ideal Gas Law. The fuel
# is allowed to relocate, which makes the fuel permeable, opening a new path for the gas
# to escape after the cladding is breached.
# Volume = (.0055^2-.005^2)*pi*.5 + .0055^2*.3*pi = 0.0000367566
# Temp = 1000
# R = 8.3144621815
# Pressure = 4e6
# n =PV/RT = 0.017683228689781283
#
[Functions]
[fuel_displacement_function]
type = ParsedFunction
expression = 'if(t>0, if(y = 0.26157333333333332, 1e-2 * t, 0.0),0.0)'
[]
[power]
type = PiecewiseLinear
x = '0 100'
y = '15000 15000'
[]
[]
[AuxVariables]
[total_moles]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.017683228689781283
[]
[layered_packing_fraction]
order = CONSTANT
family = MONOMIAL
[]
[]
[BCs]
[fuel_layer_displacement]
type = FunctionDirichletBC
variable = disp_x
boundary = '10'
function = fuel_displacement_function
[]
[temp_bc]
type = DirichletBC
variable = temperature
boundary = '10 12 5'
value = 1000
[]
[]
[AuxKernels]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_BEGIN'
[]
[]
[UserObjects]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
gas_mixture = gas_mixture_thermal_contact
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
initial_pressure = 4.0e6
execute_on = 'initial TIMESTEP_END'
#debug_output = true
[]
[]
[Materials]
# This counters the initial stress from the plenum pressure,
# allowing for no compression of the fuel pellet
[ini_stress]
type = ComputeEigenstrainFromInitialStress
block = fuel
initial_stress = '-4.0e6 0 0 0 0 0 0 0 -4.0e6'
eigenstrain_name = ini_stress
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.e11
poissons_ratio = 0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 7.5e10
poissons_ratio = 0
[]
[]
[Postprocessors]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[fuel_outer_disp_x]
type = NodalExtremeValue
boundary = 10
variable = disp_x
execute_on = 'initial timestep_end'
[]
[cladding_outer_disp_x]
type = NodalExtremeValue
boundary = 2
variable = disp_x
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
automatic_scaling = true
compute_scaling_once = false
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-3
nl_rel_tol = 1e-5
l_tol = 1e-3
l_max_its = 50
start_time = -.01
n_startup_steps = 1
dt = .01
end_time = .2
[]
[Outputs]
csv = true
exodus = true
[console]
type = Console
max_rows = 50
[]
[chkfile]
type = CSV
hide = 'burst clad_volume cladding_outer_disp_x fuel_outer_disp_x gap_layer_pressure_max gap_layer_pressure_min gas_volume maximum_power pellet_volume plenum_mole_rate plenum_pressure plenum_temp plenum_volume'
execute_on = 'FINAL'
[]
[]
(test/tests/axial_gas_communication/cladding_burst_with_impermeable_fuel.i)
# Moles are released into out of the closed volume system at constant temperature and volume,
# decreasing the pressure following the Ideal Gas Law.
#
# Volume = (.0051^2-.005^2)*pi*.5 + .0051^2*.3*pi = 2.610035177e-5
# Temp = 1000
# R = 8.31446261815324
# P_0 = 4e6
# n0 = PV/RT = 0.01255660309737312643751928
#
[Functions]
[burst_function]
type = ParsedFunction # Failure at the lowest fuel-cladding layer
expression = 'if(t > .01,if( y = 0.028240000000000001, 1.0, 0.0),0.0)'
[]
[power]
type = PiecewiseLinear
x = '0 100'
y = '0 15000'
[]
[]
[AuxVariables]
[total_moles]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.01255660309737312643751928
[]
[]
[BCs]
[outer_radius_displacement]
type = DirichletBC
variable = disp_x
boundary = '10 12 5'
value = 0.0
[]
[temp_bc]
type = DirichletBC
variable = temperature
boundary = '8 12 5'
value = 1000
[]
[]
[AuxKernels]
[bursted]
type = FunctionAux
variable = burst
function = burst_function
boundary = 2
execute_on = 'initial TIMESTEP_BEGIN'
[]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_END'
[]
[]
[UserObjects]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 13
distance = pt_distance
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
gas_mixture = gas_mixture_thermal_contact
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
initial_pressure = 4.0e6
execute_on = 'initial TIMESTEP_END'
#debug_output = true
[]
[]
[Materials]
# This counters the initial stress from the plenum pressure,
# allowing for no compression of the fuel pellet
[ini_stress_fuel]
type = ComputeEigenstrainFromInitialStress
block = fuel
initial_stress = '-4.0e6 0 0 0 0 0 0 0 -4.0e6'
eigenstrain_name = ini_stress_fuel
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = fuel
youngs_modulus = 2.e11
poissons_ratio = 0
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 7.5e10
poissons_ratio = 0
[]
[]
[Postprocessors]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_END'
[]
[average_gas_pressure]
type = SideAverageValue
variable = gap_layer_pressure
boundary = 5
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
automatic_scaling = true
compute_scaling_once = false
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-3
nl_rel_tol = 1e-5
l_tol = 1e-3
l_max_its = 50
start_time = -.01
n_startup_steps = 1
dt = .01
end_time = .33 #50
[]
[Outputs]
csv = true
exodus = true
[chkfile]
type = CSV
execute_on = 'TIMESTEP_END'
[]
[]