LOCA LWRNuclearMaterials
This tutorial is currently under development.
A pre-existing assessment case already exists in:
[NuclearMaterials<<<{"href": "../../syntax/NuclearMaterials/index.html"}>>>]
generate_output<<<{"description": "Add scalar quantity output for stress and/or strain"}>>> = 'stress_xx stress_yy stress_zz vonmises_stress hoop_stress'
fission_operation<<<{"description": "Type of fission occuring in this simulation."}>>> = 'LOCA'
physics<<<{"description": "Type(s) of physics used on this block."}>>> = 'Mechanics Thermal'
initial_temperature<<<{"description": "Initial temperature in Kelvins."}>>> = 295
stress_free_temperature<<<{"description": "Reference temperature for thermal eigenstrain calculation"}>>> = 295
extra_vector_tags<<<{"description": "The tag names for extra vectors that residual data should be saved into"}>>> = 'ref'
strain<<<{"description": "Strain formulation"}>>> = FINITE
[UO2<<<{"href": "../../syntax/NuclearMaterials/UO2/index.html"}>>>]
[fuel]
block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to"}>>> = fuel
fuel_pin_geometry<<<{"description": "Name of the UserObject that reads the pin geometry from the mesh."}>>> = fuel_pin_geometry
uo2_models<<<{"description": "Type(s) of physics models used on this block. The choices are: Burnup Elastic Creep Relocation Swelling ThermalExpansion HighBurnupStructureFormation"}>>> = 'Burnup Elastic Creep Relocation Swelling ThermalExpansion HighBurnupStructureFormation'
isotopes<<<{"description": "Fuel isotopes: Gd155 Gd157 U235 U238 Pu239 Pu240 Pu241 Pu242. Number of entries must match number of entries in isotope_fractions."}>>> = 'U235 U238'
isotope_fractions<<<{"description": "The isotope fractions associated with the 'isotopes' input line. Must sum to 1.0."}>>> = '0.035 0.965'
burnup_relocation_stop<<<{"description": "Burnup at which relocation strain stops (in FIMA)"}>>> = 0.024
axial_power_profile<<<{"description": "The axial power peaking function."}>>> = axial_peaking_factors
rod_ave_lin_pow<<<{"description": "The rod power history function."}>>> = power_history
fragmentation_model<<<{"description": "The model used to calculate the number of cracks in the fuel."}>>> = 'BARANI'
[]
[]
[ZirconiumAlloy<<<{"href": "../../syntax/NuclearMaterials/ZirconiumAlloy/index.html"}>>>]
[clad]
block<<<{"description": "The list of ids of the blocks (subdomain) that the stress divergence kernels will be applied to"}>>> = clad
fuel_pin_geometry<<<{"description": "Name of the UserObject that reads the pin geometry from the mesh."}>>> = fuel_pin_geometry
cladding_models<<<{"description": "Type(s) of physics models used on this block. The choices are: Creep Elastic Plasticity ZryOxidation IrradiationGrowth ThermalExpansion ZrPhase ZryCladdingFailure"}>>> = 'Elastic Creep IrradiationGrowth ZrPhase ZryOxidation ZryCladdingFailure'
failure_criterion<<<{"description": "Options to determine when the cladding material is considered to have burst"}>>> = overstress
additional_generate_output<<<{"description": "Add scalar quantity output for stress and/or strain (will be appended to the list in `generate_output`)"}>>> = 'strain_zz hoop_creep_strain'
fast_neutron_flux_factor<<<{"description": "The fast neutron flux if the function, RALP, and q_variable are not given. A scaling factor if the function, RALP, or q_variable is given. If RALP or q_variable is given, it is recommended to use a value of 3e13 (n/(m^2s)/(W/m))."}>>> = 3e13
[]
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1_action.i)(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1_action.i)
[GlobalParams]
density = 10452.96
initial_porosity = 0.048
initial_grain_radius = 5.0e-6
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
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
[]
[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]
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[gap_thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[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'
[]
[gas_th_cond]
type = MaterialRealAux
variable = gap_thermal_conductivity
property = gap_conductivity
boundary = 10
execute_on = 'initial linear'
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[]
[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_function = burnup
axial_relocation_output_options = MASS_FRACTION
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc
inlet_temperature = heat_sink_temperature
effective_emissivity = 0.75
rod_diameter = 0.01075
rod_pitch = 1.26e-2
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 = 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
[]
[]
[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'
material_input = fis_gas_released
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
out_of_plane_strain = strain_yy
fuel_pin_geometry = fuel_pin_geometry
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
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[]
[NuclearMaterials]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hoop_stress'
fission_operation = 'LOCA'
physics = 'Mechanics Thermal'
initial_temperature = 295
stress_free_temperature = 295
extra_vector_tags = 'ref'
strain = FINITE
[UO2]
[fuel]
block = fuel
fuel_pin_geometry = fuel_pin_geometry
uo2_models = 'Burnup Elastic Creep Relocation Swelling ThermalExpansion HighBurnupStructureFormation'
isotopes = 'U235 U238'
isotope_fractions = '0.035 0.965'
burnup_relocation_stop = 0.024
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
fragmentation_model = 'BARANI'
[]
[]
[ZirconiumAlloy]
[clad]
block = clad
fuel_pin_geometry = fuel_pin_geometry
cladding_models = 'Elastic Creep IrradiationGrowth ZrPhase ZryOxidation ZryCladdingFailure'
failure_criterion = overstress
additional_generate_output = 'strain_zz hoop_creep_strain'
fast_neutron_flux_factor = 3e13
[]
[]
[]
[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'
[]
[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
[]
[]
[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
# end_time = 172489043 # Begin Blowdown
# 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 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'
[]
[mass_fraction]
type = LineValueSampler
start_point = '0 0.01124 0'
end_point = '0 0.47524 0'
num_points = 30
sort_by = y
variable = layered_mass_fraction
outputs = 'outfile_mass_1'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
perf_graph = true
[exodus]
type = Exodus
file_base = IFA_650_4_part1_out
execute_on = 'initial timestep_end'
[]
[checkpoint]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_temp_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[]