- bottom_clad_height0.00224Height of bottom cladding wall.
Default:0.00224
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Height of bottom cladding wall.
- bottom_coordinate0Y coordinate of lowest part of the mesh.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Y coordinate of lowest part of the mesh.
- bx_p1The amount to grow (or shrink) the fuel elements in the radial direction.
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The amount to grow (or shrink) the fuel elements in the radial direction.
- chamfer_height0 Height of the chamfer for each pellet block. Must be non-negative. Ignored if 'pellet_chamfer_width' is zero. Must be give if 'pellet_chamfer_width' is positive.
Default:0
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Height of the chamfer for each pellet block. Must be non-negative. Ignored if 'pellet_chamfer_width' is zero. Must be give if 'pellet_chamfer_width' is positive.
- chamfer_width0 Width of the chamfer for each pellet block. Must be non-negative. Assumed to be zero if not given.
Default:0
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Width of the chamfer for each pellet block. Must be non-negative. Assumed to be zero if not given.
- clad_bot_gap_height0.00127Gap between bottom of pellet and inside bottom surface of cladding
Default:0.00127
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Gap between bottom of pellet and inside bottom surface of cladding
- clad_gap_width2.5e-05Gap between outer radius of pellet and inside surface of cladding
Default:2.5e-05
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Gap between outer radius of pellet and inside surface of cladding
- clad_mesh_densitymediumSets the mesh density of the cladding (coarse, medium, fine)
Default:medium
C++ Type:MooseEnum
Controllable:No
Description:Sets the mesh density of the cladding (coarse, medium, fine)
- clad_thickness0.00041Thickness of cladding side wall
Default:0.00041
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Thickness of cladding side wall
- clad_top_gap_heightGap between top of pellet and inside top surface of cladding
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Gap between top of pellet and inside top surface of cladding
- coating_thickness0Thickness of coating on exterior of cladding.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Thickness of coating on exterior of cladding.
- dish_depth0 Depth of the dish for each pellet block. Must be non-negative. Assumed to be zero if not given.
Default:0
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Depth of the dish for each pellet block. Must be non-negative. Assumed to be zero if not given.
- dish_radius0 Radius of dished region for each pellet block. Region between this radius and the chamfer will be a flat surface.
Default:0
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Radius of dished region for each pellet block. Region between this radius and the chamfer will be a flat surface.
- elem_typeQUAD4The type of element to generate (QUAD4 QUAD8 QUAD9).
Default:QUAD4
C++ Type:MooseEnum
Controllable:No
Description:The type of element to generate (QUAD4 QUAD8 QUAD9).
- fuel_base_namepelletThe base block name for fuel blocks.
Default:pellet
C++ Type:std::string
Controllable:No
Description:The base block name for fuel blocks.
- include_cladTrueWhether to include clad block
Default:True
C++ Type:bool
Controllable:No
Description:Whether to include clad block
- include_fuelTrueWhether to include fuel block
Default:True
C++ Type:bool
Controllable:No
Description:Whether to include fuel block
- intervalsIf specified, this forces element boundaries on the fuel pin region. This specifies a list of interval sizes for each block that taken together must add up to the length of the fuel pin region For example, if set to "intervals='0.2 0.3'" then the fuel pin element block will have an element boundary at 0.2 meters, with the total height being 0.5 meters. Note that this total height must be equal to the sum of pellet_quantity * pellet_height for all quantities/heights.
C++ Type:std::vector<std::vector<double>>
Unit:(no unit assumed)
Controllable:No
Description:If specified, this forces element boundaries on the fuel pin region. This specifies a list of interval sizes for each block that taken together must add up to the length of the fuel pin region For example, if set to "intervals='0.2 0.3'" then the fuel pin element block will have an element boundary at 0.2 meters, with the total height being 0.5 meters. Note that this total height must be equal to the sum of pellet_quantity * pellet_height for all quantities/heights.
- intervals_nyThe number of axial elements in each of the intervals for the fuel pin and the side clad regions, optionally used if the "intervals" are specified.
C++ Type:std::vector<std::vector<unsigned int>>
Controllable:No
Description:The number of axial elements in each of the intervals for the fuel pin and the side clad regions, optionally used if the "intervals" are specified.
- liner_thickness0Thickness of liner on interior of cladding.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Thickness of liner on interior of cladding.
- nx_c2Number of cladding elements in radial direction.
Default:2
C++ Type:unsigned int
Controllable:No
Description:Number of cladding elements in radial direction.
- nx_chamfer0 Number of radial elements across the chamfer for each pellet block.
Default:0
C++ Type:std::vector<unsigned int>
Controllable:No
Description:Number of radial elements across the chamfer for each pellet block.
- nx_coating0Number of coating elements in the radial direction.
Default:0
C++ Type:unsigned int
Controllable:No
Description:Number of coating elements in the radial direction.
- nx_dish0 Number of radial elements across the dish for each pellet block.
Default:0
C++ Type:std::vector<unsigned int>
Controllable:No
Description:Number of radial elements across the dish for each pellet block.
- nx_flat0 Number of radial elements across the flat portion for each pellet block.
Default:0
C++ Type:std::vector<unsigned int>
Controllable:No
Description:Number of radial elements across the flat portion for each pellet block.
- nx_liner0Number of liner elements in the radial direction.
Default:0
C++ Type:unsigned int
Controllable:No
Description:Number of liner elements in the radial direction.
- nx_p8 number of fuel elements in radial direction
Default:8
C++ Type:std::vector<unsigned int>
Controllable:No
Description:number of fuel elements in radial direction
- ny_c24Number of cladding elements in axial direction.
Default:24
C++ Type:unsigned int
Controllable:No
Description:Number of cladding elements in axial direction.
- ny_c_bot_gapIf "intervals" are specified, this is the number of axial elements in the clad area between the bottom top surface of bottom clad plug and the bottom of the pellet. If not specified, the number will be computed to be roughly equivalent to the size of elements in the active fuel region.
C++ Type:unsigned int
Controllable:No
Description:If "intervals" are specified, this is the number of axial elements in the clad area between the bottom top surface of bottom clad plug and the bottom of the pellet. If not specified, the number will be computed to be roughly equivalent to the size of elements in the active fuel region.
- ny_c_plenumIf "intervals" are specified, this is the number of axial elements in the plenum (gap between top of pellet and bottom surface of top clad plug). If not specified, the number will be computed to be roughly equivalent to the size of elements in the active fuel region.
C++ Type:unsigned int
Controllable:No
Description:If "intervals" are specified, this is the number of axial elements in the plenum (gap between top of pellet and bottom surface of top clad plug). If not specified, the number will be computed to be roughly equivalent to the size of elements in the active fuel region.
- ny_cl1Number of cladding elements in lower plug in axial direction.
Default:1
C++ Type:unsigned int
Controllable:No
Description:Number of cladding elements in lower plug in axial direction.
- ny_cu1Number of cladding elements in upper plug in axial direction.
Default:1
C++ Type:unsigned int
Controllable:No
Description:Number of cladding elements in upper plug in axial direction.
- ny_p24 Number of fuel elements in axial direction
Default:24
C++ Type:std::vector<unsigned int>
Controllable:No
Description:Number of fuel elements in axial direction
- pellet_height0.01186 Pellet height
Default:0.01186
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Pellet height
- pellet_inner_radius0 Pellet inner radius. If more than one value, the number of values must match the number of values in pellet_quantity.
Default:0
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Pellet inner radius. If more than one value, the number of values must match the number of values in pellet_quantity.
- pellet_mesh_densitymediumSets the mesh density of the pellet (really_coarse coarse medium fine customize).
Default:medium
C++ Type:MooseEnum
Controllable:No
Description:Sets the mesh density of the pellet (really_coarse coarse medium fine customize).
- pellet_outer_radius0.0041Pellet outer radius
Default:0.0041
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Pellet outer radius
- pellet_quantity2 Number of pellets in smeared mesh
Default:2
C++ Type:std::vector<unsigned int>
Controllable:No
Description:Number of pellets in smeared mesh
- plenum_fuel_ratioRatio of the axial gas height to the fuel height inside the cladding
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Ratio of the axial gas height to the fuel height inside the cladding
- top_clad_height0.00224Height of top cladding wall.
Default:0.00224
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Height of top cladding wall.
- use_legacy_block_idsTrueWhether to use legacy block id convention. Must be false if creating multiple fuel blocks.
Default:True
C++ Type:bool
Controllable:No
Description:Whether to use legacy block id convention. Must be false if creating multiple fuel blocks.
FuelPinMeshGenerator
Creates a 2D-RZ axisymmetric mesh of a fuel rod.
Description
The FuelPinMeshGenerator generates a smeared pellet mesh for use in simulating fuel rods with pellet fuel. In a smeared mesh, the fuel stack is treated as a single rectangle of fuel (i.e., dishes and chamfers are not included). The typical mesh is shown in Figure 1.

Figure 1: Diagram of a the most common smeared pellet mesh generated from FuelPinMeshGenerator. Sidesets and nodesets are clearly defined.
A coating and liner may be added to the exterior and interior of the cladding radial surface, respectively. In simulations involving a coating, a new block with an id of 2 is created called liner and sideset id 2 becomes the outside surface of the coating. When including a liner, a new block with an id of 4 is created called liner and sideset id 5 becomes the inside surface of the liner.
FuelPinMeshGenerator is also able to create meshes with discrete pellets. Pellets are connected at the nodes at the boundary of the dishes and flat surfaces of the pellets. A description of important parameters for discrete pellet meshes is in Figure 2 where sections of two pellets, with different values for pellet_inner_radius, and cladding are shown.

Figure 2: Mesh for two pellets in a discrete mesh. Important parameters are shown.
Example Input Syntax
An example of a smeared pellet mesh with a coating is given by:
[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
[gen]
type = FuelPinMeshGenerator<<<{"description": "Creates a 2D-RZ axisymmetric mesh of a fuel rod.", "href": "FuelPinMeshGenerator.html"}>>>
clad_top_gap_height<<<{"description": "Gap between top of pellet and inside top surface of cladding"}>>> = 6.0413e-4
coating_thickness<<<{"description": "Thickness of coating on exterior of cladding."}>>> = 1e-4
nx_coating<<<{"description": "Number of coating elements in the radial direction."}>>> = 2
clad_mesh_density<<<{"description": "Sets the mesh density of the cladding (coarse, medium, fine)"}>>> = customize
[]
[](test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_with_coating.i)An example of a smeared pellet mesh with a liner is given by:
[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
[gen]
type = FuelPinMeshGenerator<<<{"description": "Creates a 2D-RZ axisymmetric mesh of a fuel rod.", "href": "FuelPinMeshGenerator.html"}>>>
clad_top_gap_height<<<{"description": "Gap between top of pellet and inside top surface of cladding"}>>> = 6.0413e-4
liner_thickness<<<{"description": "Thickness of liner on interior of cladding."}>>> = 1e-4
nx_liner<<<{"description": "Number of liner elements in the radial direction."}>>> = 2
clad_mesh_density<<<{"description": "Sets the mesh density of the cladding (coarse, medium, fine)"}>>> = customize
[]
[](test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_with_liner.i)An example of a mesh with discrete pellets is given by:
[Mesh<<<{"href": "../../syntax/Mesh/index.html"}>>>]
[gen]
type = FuelPinMeshGenerator<<<{"description": "Creates a 2D-RZ axisymmetric mesh of a fuel rod.", "href": "FuelPinMeshGenerator.html"}>>>
clad_top_gap_height<<<{"description": "Gap between top of pellet and inside top surface of cladding"}>>> = 6.0413e-4
nx_chamfer<<<{"description": "Number of radial elements across the chamfer for each pellet block."}>>> = 1
nx_flat<<<{"description": "Number of radial elements across the flat portion for each pellet block."}>>> = 3
nx_dish<<<{"description": "Number of radial elements across the dish for each pellet block."}>>> = 5
chamfer_width<<<{"description": "Width of the chamfer for each pellet block. Must be non-negative. Assumed to be zero if not given."}>>> = 5e-4
chamfer_height<<<{"description": "Height of the chamfer for each pellet block. Must be non-negative. Ignored if 'pellet_chamfer_width' is zero. Must be give if 'pellet_chamfer_width' is positive."}>>> = 1.6e-4
dish_depth<<<{"description": "Depth of the dish for each pellet block. Must be non-negative. Assumed to be zero if not given."}>>> = 3e-4
dish_radius<<<{"description": "Radius of dished region for each pellet block. Region between this radius and the chamfer will be a flat surface."}>>> = .002
pellet_mesh_density<<<{"description": "Sets the mesh density of the pellet (really_coarse coarse medium fine customize)."}>>> = customize
pellet_quantity<<<{"description": "Number of pellets in smeared mesh"}>>> = '3 2'
use_legacy_block_ids<<<{"description": "Whether to use legacy block id convention. Must be false if creating multiple fuel blocks."}>>> = false
fuel_base_name<<<{"description": "The base block name for fuel blocks."}>>> = fuel
ny_p<<<{"description": "Number of fuel elements in axial direction"}>>> = '15 16'
nx_c<<<{"description": "Number of cladding elements in radial direction."}>>> = 1
ny_cu<<<{"description": "Number of cladding elements in upper plug in axial direction."}>>> = 1
ny_cl<<<{"description": "Number of cladding elements in lower plug in axial direction."}>>> = 1
clad_mesh_density<<<{"description": "Sets the mesh density of the cladding (coarse, medium, fine)"}>>> = customize
[]
[](test/tests/fuel_pin_mesh_generator/discrete.i)Input Parameters
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:No
Description:Set the enabled status of the MooseObject.
- save_with_nameKeep the mesh from this mesh generator in memory with the name specified
C++ Type:std::string
Controllable:No
Description:Keep the mesh from this mesh generator in memory with the name specified
Advanced Parameters
- nemesisFalseWhether or not to output the mesh file in the nemesisformat (only if output = true)
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not to output the mesh file in the nemesisformat (only if output = true)
- outputFalseWhether or not to output the mesh file after generating the mesh
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not to output the mesh file after generating the mesh
- show_infoFalseWhether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)
Debugging Parameters
Input Files
- (assessment/MOX/JOYO/MK-I/analysis/MK-I_75MW_master_new_bubble_gb_lim.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/0pt5MPa/25C_sec/25C_sec_Hardy_Tube_Test_0pt5MPa.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK5/FK05.i)
- (assessment/nitride/EBRII/SP1/analysis/SP1_base.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK9/FK09.i)
- (assessment/LWR/validation/Super_Ramp/analysis/Super_Ramp_Base.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_B/x441_leg_B.i)
- (assessment/MOX/JOYO/MK-II/analysis/MK-II_master_new_bubble_gb_lim.i)
- (examples/multiapp/pin2.i)
- (examples/constituent_redistribution/2d_thermo.i)
- (test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_intervals1.i)
- (test/tests/sodium_coolant_channel/dp16.i)
- (assessment/LWR/validation/HbepR1/analysis/A184/HbepR1_A184.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/UFE067/UFE067.i)
- (assessment/metallic_fuel/TREAT/M7/analysis/binary_t427.i)
- (test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_with_liner.i)
- (test/tests/metallic_fuel_cladding_degradation/test_id.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_A/x441_grp_A.i)
- (assessment/nitride/EBRII/K4/analysis/base.i)
- (assessment/nitride/MTR/SNAP50/analysis/SNAP50_Pin_base_action.i)
- (assessment/LWR/validation/RIA_CABRI_REP_Na/analysis/REP_Na_RIA.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_C/x441_grp_C.i)
- (assessment/LWR/validation/HbepR1/analysis/A364/HbepR1_A364.i)
- (examples/metal_fuel/x441_coarse/x441_group_A_nominal.i)
- (test/tests/ad_metallic_fuel_coolant_wastage/cc_wastage_ht9_eff_full_pin.i)
- (assessment/nitride/EBRII/K4/analysis/base_action.i)
- (test/tests/fast_neutron_flux_from_power/rods.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/x441_base.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/base_input/Hardy_Tube_Test.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/2pt1MPa/100C_sec/100C_sec_Hardy_Tube_Test_2pt1MPa.i)
- (assessment/nitride/PW-CANEL/SNAP50/analysis/PW_SNAP50_UN_Pin_base.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_H/x441_grp_H.i)
- (assessment/LWR/validation/Tribulation/analysis/BN3X15/BN3X15.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK4/FK04.i)
- (assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim_DiffCoeff4_GrainGrowth.i)
- (assessment/LWR/validation/Tribulation/analysis/BN1X4/BN1X4.i)
- (assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_old_bubble_gb_lim.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part2.i)
- (test/tests/standard_lwr_outputs_action/mini_complete_rod.i)
- (assessment/MOX/JOYO/B14/PTM010/analysis/b14_ptm010_2DRZ_t.i)
- (assessment/LWR/validation/IFA_636/analysis/IFA_636_solid_swell/IFA_636_solid_swell.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK7/FK07.i)
- (test/tests/fuel_pin_mesh_generator/nonzero_inner_radius.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM073/BFM073.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK2/FK02.i)
- (assessment/MOX/FFTF/FO-2/L09/analysis/fftf_fo2_L09_master.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/1pt0MPa/25C_sec/25C_sec_Hardy_Tube_Test_1pt0MPa.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_H/x441_leg_H.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/x441_base_action.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM034/BFM034.i)
- (test/tests/ifba_he_production/ifba_examp_template.i)
- (assessment/carbide/EBRII/WSA32/analysis/base.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM156/BFM156.i)
- (examples/constituent_redistribution/2d_composition.i)
- (assessment/LWR/validation/LOCA_ANL_cladding_burst_tests/analysis/OCL5_8/OCL5_8.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK8/FK08.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_G/x441_grp_G.i)
- (test/tests/metallic_fuel_coolant_wastage/cc_wastage_ht9_eff_full_pin.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2a/27_2a.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2b/27_2b.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-1kW_action.i)
- (test/tests/zry_oxidation_cladding/zryoxidation_pingeo.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_A/x441_leg_A.i)
- (assessment/LWR/validation/LOCA_ANL_cladding_burst_tests/analysis/OCL11/OCL11.i)
- (assessment/nitride/MTR/SNAP50/analysis/SNAP50_base.i)
- (examples/2D-RZ_rodlet_10pellets/smeared_cracking/SmearedCracking.i)
- (test/tests/upuzr_fast_neutron_flux/rods.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part1.i)
- (examples/multiapp/pin1.i)
- (test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_intervals_with_liner.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/0pt7MPa/100C_sec/Hardy_Tube_Test_0pt7MPa.i)
- (test/tests/metallic_fuel_cladding_degradation/test_id_missing_geom.i)
- (assessment/MOX/JOYO/B14/PTM002/analysis/b14_ptm002_2DRZ_t.i)
- (examples/accident_tolerant_fuel/uo2_coated_zircaloy/uo2_coated_zircaloy.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_F/x441_leg_F.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/0pt3MPa/100C_sec/100C_sec_Hardy_Tube_Test_0pt3MPa.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/1pt4MPa/100C_sec/100C_sec_Hardy_Tube_Test_1pt4MPa.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/x441_base_legacy_swell.i)
- (assessment/MOX/JOYO/B14/PTM003/analysis/b14_ptm003_2DRZ_t.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/13pt8MPa/25C_sec/25C_sec_Hardy_Tube_Test_13pt8MPa.i)
- (test/tests/zry_oxidation_cladding/zryoxidation.i)
- (test/tests/fuel_pin_mesh_generator/dish_only.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_196/Studsvik_196_part2.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/1pt4MPa/25C_sec/25C_sec_Hardy_Tube_Test_1pt4MPa.i)
- (assessment/verification/Other/plenum_pressure/rz.i)
- (assessment/LWR/validation/RIA_CABRI_REP_Na/analysis/REP_Na_2D_Base_Irradiation_Option.i)
- (assessment/nitride/JOYO/JOYO_L4C4/analysis/JOYO_Pin_base_action.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/3pt8MPa/25C_sec/25C_sec_Hardy_Tube_Test_3pt8MPa.i)
- (test/tests/zry_oxidation_cladding/adZryoxidation.i)
- (examples/metal_fuel/X447_coarse/DP21_test.i)
- (examples/fast_mox_sifgrs/input_single_pellet_sifgrs_mox.i)
- (assessment/MOX/JOYO/MK-II/analysis/MK-II_master_old_bubble_gb_lim.i)
- (assessment/LWR/validation/HbepR1/analysis/H8364/HbepR1_H8364.i)
- (assessment/LWR/benchmark/RIA_benchmark/analysis/RIA_benchmark.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM043/BFM043.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK2/FK02_action.i)
- (test/tests/standard_metallic_outputs_action/x441_mini_fuel_rod.i)
- (test/tests/ifba_he_production/doc/fill_gas_xenon.i)
- (assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim_DiffCoeff4.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK1/FK01_action.i)
- (test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_intervals_with_coating.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/uo2_relocation/relocation_only_smear.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK6/FK06.i)
- (test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_with_coating.i)
- (test/tests/fuel_pin_mesh_generator/drilled.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFG092/BFG092.i)
- (assessment/nitride/PW-CANEL/SNAP50/analysis/PW_SNAP50_UN_Pin_base_action.i)
- (assessment/LWR/validation/LOCA_ANL_cladding_burst_tests/analysis/OCL11/OCL11_aniso.i)
- (assessment/MOX/JOYO/B14/PTM001/analysis/b14_ptm001_2DRZ_t.i)
- (examples/thor_capsule_transfer/pin_with_heat_sink.i)
- (examples/2D-RZ_rodlet_10pellets/smeared_cracking/ADSmearedCracking.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_196/Studsvik_196_part1.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_E/x441_grp_E.i)
- (examples/NuclearMaterialActions/MetallicFuel/x441_group_A_nominal_action.i)
- (test/tests/metallic_fuel_melting_function/test_general.i)
- (assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2d/27_2d.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_G/x441_leg_G.i)
- (test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_intervals2.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_E/x441_leg_E.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_B/x441_grp_B.i)
- (test/tests/ifba_he_production/doc/fill_gas_helium.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/0pt7MPa/25C_sec/25C_sec_Hardy_Tube_Test_0pt7MPa.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_C/x441_leg_C.i)
- (assessment/MOX/JOYO/MK-I/analysis/MK-I_50MW_master_new_bubble_gb_lim.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM071/BFM071.i)
- (test/tests/metallic_fuel_cladding_degradation/test_od.i)
- (test/tests/fuel_pin_mesh_generator/fuel_pin_mesh.i)
- (assessment/nitride/JOYO/JOYO_L4C4/analysis/JOYO_Pin_base.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/2pt8MPa/25C_sec/25C_sec_Hardy_Tube_Test_2pt8MPa.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK3/FK03.i)
- (assessment/LWR/validation/LOCA_ANL_cladding_burst_tests/analysis/OCL11/OCL11_ad.i)
- (assessment/nitride/EBRII/SP1/analysis/SP1_Pin_base_action.i)
- (test/tests/fuel_pin_mesh_generator/chamfer_only.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK1/FK01.i)
- (test/tests/ifba_he_production/fill_gas_xenon_w_ifba.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/UFE019/UFE019.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM070/BFM070.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/3pt8MPa/100C_sec/100C_sec_Hardy_Tube_Test_3pt8MPa.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/5pt5MPa/100C_sec/100C_sec_Hardy_Tube_Test_5pt5MPa.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-2kW.i)
- (assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim.i)
- (test/tests/fuel_pin_mesh_generator/discrete.i)
- (assessment/LWR/validation/Super_Ramp/analysis/PK62/PK62_weighted_gap_VCP.i)
- (test/tests/ifba_he_production/ifba_only_template.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/0pt3MPa/25C_sec/25C_sec_Hardy_Tube_Test_0pt3MPa.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT6A/MT6A_1-1kW.i)
- (assessment/LWR/validation/RIA_NSRR_FK/analysis/FK3/FK03_ccm.i)
- (test/tests/solid_mechanics/uo2_eigenstrains/uo2_relocation/relo_recov_fuel_rod.i)
- (test/tests/fuel_pin_mesh_generator/discrete_drilled.i)
- (assessment/LWR/validation/Tribulation/analysis/BN1X3/BN1X3.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/2pt1MPa/25C_sec/25C_sec_Hardy_Tube_Test_2pt1MPa.i)
- (assessment/MOX/JOYO/MK-I/analysis/MK-I_75MW_master_old_bubble_gb_lim.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFJ027/BFJ027.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_D/x441_leg_D.i)
- (test/tests/standard_metallic_outputs_action/x441_mini_fuel_rod_no_std_blk.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT6A/MT6A_1-2kW.i)
- (assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim_grainGrowth.i)
- (assessment/MOX/JOYO/MK-I/analysis/MK-I_50MW_master_old_bubble_gb_lim.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-1kW.i)
- (test/tests/fuel_pin_mesh_generator/capsule.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/5pt5MPa/25C_sec/25C_sec_Hardy_Tube_Test_5pt5MPa.i)
- (assessment/LWR/validation/LOCA_ANL_cladding_burst_tests/analysis/OCL5_8/OCL5_8_aniso.i)
- (test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_bias.i)
- (assessment/LWR/validation/IFA_636/analysis/IFA_636/IFA_636.i)
- (assessment/LWR/validation/LOCA_ANL_cladding_burst_tests/analysis/OCL5_8/OCL5_8_ad.i)
- (assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BEN013/BEN013.i)
- (test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_intervals1_bias.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_D/x441_grp_D.i)
- (test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_quad8_bias.i)
- (test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_customize.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_F/x441_grp_F.i)
- (test/tests/sodium_coolant_channel/dp16_old.i)
- (examples/metal_fuel/uzr_densification/ebr2_2d_interpores_densification.i)
Child Objects
References
No citations exist within this document.(test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_with_coating.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
coating_thickness = 1e-4
nx_coating = 2
clad_mesh_density = customize
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[pellet_centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
exodus = true
[]
(test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_with_liner.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
liner_thickness = 1e-4
nx_liner = 2
clad_mesh_density = customize
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[pellet_centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
exodus = true
[]
(test/tests/fuel_pin_mesh_generator/discrete.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
nx_chamfer = 1
nx_flat = 3
nx_dish = 5
chamfer_width = 5e-4
chamfer_height = 1.6e-4
dish_depth = 3e-4
dish_radius = .002
pellet_mesh_density = customize
pellet_quantity = '3 2'
use_legacy_block_ids = false
fuel_base_name = fuel
ny_p = '15 16'
nx_c = 1
ny_cu = 1
ny_cl = 1
clad_mesh_density = customize
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[pellet_centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(assessment/MOX/JOYO/MK-I/analysis/MK-I_75MW_master_new_bubble_gb_lim.i)
initial_fuel_density = 10836.8
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.065
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.6
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000100
clad_thickness = 0.00035
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.599
elem_type = QUAD8
nx_c = 4
ny_c = 200
nx_p = 20
ny_p = 200
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = '0 70000 25000000'
y = '0 38974.7 38974.7'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 70000 25000000'
y = '0 1.9e+19 1.9e+19'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0 0.071 0.146 0.221 0.296 0.37 0.443 0.566'
y = '0 25000000'
z = '0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672 0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = '0 70000 25000000'
y = '0 32000 32000'
[]
[clad_surface_temp]
type = PiecewiseBilinear
x = '0 0.071 0.146 0.221 0.296 0.37 0.443 0.566'
y = '0 25000000'
z = '295 295 295 295 295 295 295 295 593.58 606.36 619.13 630.26 640.87 651.76 662.67 673.67'
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.065
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp_clad_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_surface_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 101325
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 300000
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10836.8
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
diff_coeff_option = TURNBULL_D1_4D2_4D3
fission_rate = fission_rate
grain_radius_const = 8.01e-6 #I'm keeping the grain radius const because the grain growth in MOX is probably different due to high Temp
bubble_gb_limit = 1.0e+11
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-5
fixed_point_rel_tol = 1e-5
fixed_point_max_its = 1
l_max_its = 70
l_tol = 8e-3
nl_max_its = 70
nl_rel_tol = 1e-5
nl_abs_tol = 1e-5
start_time = 0
n_startup_steps = 1
end_time = 25000000
dtmax = 1e6
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 5000
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.6 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = MK-I_75MW_sub_new_bubble_gb_lim.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'temp disp_x disp_y'
[]
(assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/0pt5MPa/25C_sec/25C_sec_Hardy_Tube_Test_0pt5MPa.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[gen]
type = FuelPinMeshGenerator
include_fuel = false
include_clad = true
pellet_outer_radius = 0.0072527
clad_gap_width = 0.0
clad_top_gap_height = 0.0
clad_bot_gap_height = 0.0
clad_thickness = 0.38e-3
pellet_height = 0.5
pellet_quantity = 1
clad_mesh_density = customize
nx_c = 2
ny_c = 50
elem_type = QUAD8
[]
[]
[Variables]
[temperature]
initial_condition = 600.0
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 40'
y = '1 1'
[]
[temp_function]
type = PiecewiseLinear
y = '600 1600'
[]
[temperature_profile]
type = PiecewiseBilinear
y = '0 40'
x = '0 0.25224 0.50448'
z = '0.995 1.01 0.995 0.995 1.01 0.995'
axis = 1
[]
[inner_temperature]
type = CompositeFunction
functions = 'temp_function temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
factor = 0.0
function = pressure_function
[]
[inner_surface]
boundary = 'clad_inside_right clad_inside_bottom clad_inside_top'
function = pressure_function
[]
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 1001
value = 0.0
[]
[x_fix]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
function = inner_temperature
variable = temperature
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[Materials]
[clad_thermal]
type = ZryThermal
block = clad
zry_thermal_properties_model = MATPRO
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = true
matpro_poissons_ratio = true
temperature = temperature
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = true
model_thermal_creep = true
temperature_loca_creep_begin = 840 # values from the report
temperature_standard_thermal_creep_end = 975
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 600.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-5
nl_abs_tol = 1.0e-8
start_time = 0
n_startup_steps = 1
end_time = 40
dtmax = 1
dtmin = 0.0000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 1.0
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = all_clad_interior
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = total_hoop_strain
[]
[max_disp_x]
type = NodalExtremeValue
block = clad
value_type = max
variable = disp_x
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[csv]
type = CSV
[]
[chkfile]
type = CSV
show = 'max_disp_x max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = false
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK5/FK05.i)
# This file was created using BIF with the following inputs:
# FK05/FK05.var - md5sum: 789d603cfbdaaeb2625ea98056214f6f
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.5e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.20e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.20e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.20e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/nitride/EBRII/SP1/analysis/SP1_base.i)
fuel_radius = '${fparse fuel_diameter / 2}' # m
fuel_volume = '${fparse pi * fuel_radius^2 * fuel_height}' # m
cladding_radial_gap = '${fparse diametral_gap / 2}'
pin_height = ${fparse fuel_height + plenum_height + 2 * cladding_bottom_top_plug_length} # m
R = 8.31446261815324
A_U = 0.238 # kg/mol
A_Pu = 0.239 # kg/mol
A_N = 0.014 # kg/mol
avo = 6.0221408e23 # atoms per mole
th_density = 14400 # kg/m3
initial_porosity = '${fparse 1.0 - fraction_th_density}'
density = '${fparse fraction_th_density * th_density}' # kg/m3
M_avg = '${fparse x_N * A_N + x_Pu * A_Pu + (1.0 - x_Pu) * A_U}' # kg / mol
atoms_heavy_metal_per_volume = '${fparse density / M_avg * avo}' # mol / m3
# Power history
avg_lin_power = '${fparse specific_power * density * pi * fuel_radius^2}' # W/m
time_end_ramp_up = '${fparse 5 * 3600}' # s, arbitrary 5 hour ramp
time_start_ramp_down = '${fparse time_end_ramp_up + run_time}' # s
time_end_ramp_down = '${fparse time_start_ramp_down + time_end_ramp_up}' # s
total_time = '${fparse time_end_ramp_down + 3600}' # s
[GlobalParams]
order = FIRST
energy_per_fission = 3.412e-11 # J/fission
displacements = 'disp_x disp_y'
value_range_behavior = IGNORE
min_damping = 1e-4
volumetric_locking_correction = true
absolute_value_vector_tags = ref
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
converge_on = 'disp_x disp_y temperature'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${cladding_thickness}
pellet_outer_radius = ${fuel_radius}
pellet_height = ${fuel_height}
clad_top_gap_height = ${plenum_height}
clad_gap_width = ${cladding_radial_gap}
top_clad_height = ${cladding_bottom_top_plug_length}
bottom_clad_height = ${cladding_bottom_top_plug_length}
clad_bot_gap_height = ${gap_bottom_length}
liner_thickness = ${liner_thickness}
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 150
nx_c = 4
ny_c = 150
ny_cu = 3
ny_cl = 3
nx_liner = 2
pellet_quantity = 1
elem_type = QUAD4
[]
patch_size = 30
patch_update_strategy = always
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 ${time_end_ramp_up} ${time_start_ramp_down} ${time_end_ramp_down}'
y = '0 ${avg_lin_power} ${avg_lin_power} 0'
[]
[axial_power_function] # estimated, actual peaking unknown
type = PowerPeakingFunction
fit = EBRII_ROW_3
pellet_length = '${fuel_height}'
pellet_y_start = ${fparse cladding_bottom_top_plug_length + gap_bottom_length}
[]
[coolant_wall_temperature]
# This is fit from coolant wall temperature provided in Dutt, Cox, Millhollen, "Performance of Refractory Alloy-clad Fuel Pins" (1984)
type = ParsedFunction
expression = 'full_temp := 2.46e7*y^4 - 4.836e6*y^3 + 1.09e5*y^2 + 1.19e4*y + 1.13e3;
if(t < ${time_end_ramp_up}, ${initial_temperature} + t * (full_temp - ${initial_temperature}) / (${time_end_ramp_up}), if(t < ${time_start_ramp_down}, full_temp, if(t < ${time_end_ramp_down}, full_temp + (t - ${time_start_ramp_down}) * (${initial_temperature} - full_temp) / (${time_end_ramp_down} - ${time_start_ramp_down}), ${initial_temperature})))'
[]
[gas_diffusivity_function]
# x corresponds to temperature [K] and y corresponds to fission rate [fsn/m3/s]
type = ParsedFunction
expression = 'kBT := 1.380649e-23 / 1.602176634e-19 * x;
D1 := ${xe_D10} * exp(-1.0 * ${xe_Q1} / kBT);
D2 := (y / 1e19)^0.5 * ${xe_D20} * exp(${xe_D2Q1} / kBT + ${xe_D2Q2} / kBT / kBT);
D3 := 1.85e-39 * y;
D1 * ${D1_xe_scalar} + D2 * ${D2_xe_scalar} + D3 * ${D3_xe_scalar}'
[]
[vacancy_diffusivity_function]
# x corresponds to temperature [K] and y corresponds to fission rate [fsn/m3/s]
type = ParsedFunction
expression = 'kBT := 1.380649e-23 / 1.602176634e-19 * x;
D1 := ${D10} * exp(-1.0 * ${Q1} / kBT);
D2 := (y / 1e19)^0.5 * ${D20} * exp(${D2Q1} / kBT + ${D2Q2} / kBT / kBT);
D2b := (y / 1e19)^0.5 * ${D2b0} * exp(${D2bQ1} / kBT + ${D2bQ2} / kBT / kBT);
D1 * ${D1_scalar} + (D2 + D2b) * ${D2_scalar}'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet
strain = FINITE
add_variables = true
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
eigenstrain_names = 'fuel_thermal_expansion solid_swelling_eigenstrain gaseous_swelling_eigenstrain'
temperature = temperature
use_automatic_differentiation = true
[]
[clad]
block = clad
strain = FINITE
add_variables = true
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
eigenstrain_names = 'clad_thermal_expansion'
temperature = temperature
use_automatic_differentiation = true
[]
[liner]
block = liner
strain = FINITE
add_variables = true
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
eigenstrain_names = 'liner_thermal_expansion'
temperature = temperature
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
block = 'pellet liner clad'
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
block = 'pellet liner clad'
[]
[heat_source]
type = ADFissionRateHeatSource
variable = temperature
fission_rate = fission_rate
energy_deposited_in_fuel = 0.95
block = 'pellet'
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = clad_inside_right
secondary_boundary = pellet_outer_radial_surface
initial_moles = initial_moles
gas_released = fg_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
use_automatic_differentiation = true
# use mechanical contact subdomains
primary_subdomain = mechanical_primary_subdomain
secondary_subdomain = mechanical_secondary_subdomain
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = clad_inside_right
secondary = pellet_outer_radial_surface
c_normal = 1e+11
correct_edge_dropping = true
[]
[]
[BCs]
[no_x_all]
type = ADDirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[no_y_clad]
type = ADDirichletBC
variable = disp_y
boundary = clad_outside_bottom
value = 0.0
[]
[no_y_fuel]
type = ADDirichletBC
variable = disp_y
boundary = bottom_central_pellet_node
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
function = ${coolant_pressure}
use_automatic_differentiation = true
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = inside_surfaces
initial_pressure = ${initial_plenum_pressure}
startup_time = 0
R = ${R}
initial_temperature = ${initial_temperature}
temperature = ave_temperature_interior # coupling to post processor to get gas temperature approximation
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
volume = gas_volume # coupling to post processor to get gas volume
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
use_automatic_differentiation = true
[]
[]
[clad_outer_temperature]
type = ADFunctionDirichletBC
boundary = 'clad_outside_right'
function = coolant_wall_temperature
variable = temperature
[]
[]
[Materials]
[fission_rate]
type = ADFissionRate
block = pellet
rod_linear_power = power_history
axial_power_profile = axial_power_function
pellet_radius = ${fuel_radius}
outputs = all
[]
[burnup]
type = ADBurnup
block = pellet
atoms_heavy_metal_per_volume = ${atoms_heavy_metal_per_volume}
outputs = all
[]
[fuel_density]
block = pellet
type = ADStrainAdjustedDensity
strain_free_density = ${density}
[]
[porosity_pp]
type = ADParsedMaterial
property_name = porosity_pp
postprocessor_names = porosity_fuel_avg
expression = porosity_fuel_avg
[]
[fuel_thermal]
type = ADMNThermal
block = pellet
temperature = temperature
porosity = porosity_pp # This is a hack until thermal mortar can handle stateful materials
outputs = all
[]
[fuel_porosity]
type = ADPorosityFromStrain
block = pellet
initial_porosity = ${initial_porosity}
inelastic_strain = 'gaseous_swelling_eigenstrain'
outputs = all
[]
[fuel_elasticity_tensor]
block = pellet
type = ADMNElasticityTensor
temperature = temperature
use_old_porosity = true
porosity = porosity
output_properties = 'youngs_modulus poissons_ratio'
outputs = all
[]
[fuel_thermal_expansion]
block = pellet
type = ADMNThermalExpansionEigenstrain
eigenstrain_name = fuel_thermal_expansion
stress_free_temperature = ${initial_temperature}
temperature = temperature
[]
[fuel_radial_return_stress]
block = pellet
type = ADComputeMultipleInelasticStress
inelastic_models = 'fuel_creep'
[]
[fuel_creep]
block = pellet
type = ADMNCreepUpdate
max_inelastic_increment = 1e-3
temperature = temperature
porosity = porosity
fission_rate = fission_rate
outputs = all
[]
[burnup_swelling]
type = ADBurnupDependentEigenstrain
block = pellet
eigenstrain_name = 'solid_swelling_eigenstrain'
swelling_factor = 0.5 # 0.5% solid fission product swelling per % FIMA
burnup = burnup
outputs = all
[]
[gaseous_swelling]
type = ADParsedMaterial
block = pellet
material_property_names = 'deltav_v0_bubble_bulk deltav_v0_bd deltav_v0_bubble_intra_dislocation'
property_name = 'gaseous_swelling'
expression = 'deltav_v0_bubble_bulk + deltav_v0_bd + deltav_v0_bubble_intra_dislocation'
outputs = all
[]
[gaseous_swelling_eigenstrain]
type = ADComputeVolumetricEigenstrain
block = pellet
volumetric_materials = 'deltav_v0_bubble_bulk deltav_v0_bd deltav_v0_bubble_intra_dislocation'
eigenstrain_name = 'gaseous_swelling_eigenstrain'
[]
[vacancy_GB_diffusion]
type = ADParsedMaterial
block = pellet
property_name = vacancy_GB_diffusion
coupled_variables = 'temperature'
expression = 'kBT := 1.380649e-23 / 1.602176634e-19 * temperature;
${D1_scalar} * ${D10} * exp(-1.0 * ${Q1} / kBT) * 1e6'
[]
[fission_gas_behavior]
type = ADUNSifgrs
block = pellet
temperature = temperature
fission_rate_material = fission_rate
ig_bubble_coarsening = WITH_COARSENING
grain_radius_const = ${grain_radius}
dislocation_density_material = dislocation_density
vacancy_diffusivity_function = vacancy_diffusivity_function
gas_diffusivity_function = gas_diffusivity_function
outputs = all
initial_porosity = ${initial_porosity}
fract_yield = 0.475
shear_modulus = shear_modulus
dislocation_bubble_nucleation_factor = 5e5
vacancy_GB_diffusivity = vacancy_GB_diffusion
[]
[dislocation_density]
type = ADParsedMaterial
block = pellet
property_name = dislocation_density
expression = ${dislocation_density}
outputs = all
[]
[clad_elasticity_tensor]
block = clad
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 68.9e9
poissons_ratio = 0.4
[]
[clad_thermal_expansion]
block = clad
type = ADComputeThermalExpansionEigenstrain
eigenstrain_name = clad_thermal_expansion
thermal_expansion_coeff = 7.54e-6
stress_free_temperature = ${initial_temperature}
temperature = temperature
[]
[clad_stress]
block = clad
type = ADComputeFiniteStrainElasticStress
[]
[clad_thermal]
type = ADHeatConductionMaterial
block = clad
thermal_conductivity = 41.9
specific_heat = 270
[]
[clad_density]
block = clad
type = ADStrainAdjustedDensity
strain_free_density = 8590
[]
[liner_elasticity_tensor]
block = liner
type = ADTungstenElasticityTensor
temperature = temperature
[]
[liner_thermal_expansion]
block = liner
type = ADTungstenThermalExpansionEigenstrain
eigenstrain_name = liner_thermal_expansion
stress_free_temperature = ${initial_temperature}
temperature = temperature
[]
[liner_stress]
block = liner
type = ADComputeFiniteStrainElasticStress
[]
[liner_thermal]
block = liner
type = ADTungstenThermal
temperature = temperature
[]
[liner_density]
block = liner
type = ADStrainAdjustedDensity
strain_free_density = 19300
[]
[]
[Dampers]
[disp_x]
type = MaxIncrement
variable = disp_x
max_increment = 1e-4
[]
[disp_y]
type = MaxIncrement
variable = disp_y
max_increment = 1e-3
[]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-15'
line_search = contact
l_max_its = 60
nl_max_its = 20
nl_rel_tol = 5e-6
nl_abs_tol = 5e-9
nl_div_tol = -1
nl_abs_div_tol = -1
end_time = ${total_time}
dtmin = 1
dtmax = 5e5
verbose = true
automatic_scaling = true
compute_scaling_once = false
ignore_variables_for_autoscaling = 'thermal_contact_thermal_lm mechanical_normal_lm'
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = time_step_limit
force_step_every_function_point = true
timestep_limiting_function = power_history
dt = 1e2
post_function_sync_dt = 1e3
[]
[]
[Postprocessors]
# elemental temperatures
[temperature_fuel_avg]
type = ElementAverageValue
variable = temperature
block = pellet
execute_on = 'initial timestep_end'
[]
[temperature_fuel_max]
type = ElementExtremeValue
variable = temperature
block = pellet
execute_on = 'initial timestep_end'
[]
[temperature_fuel_min]
type = ElementExtremeValue
variable = temperature
block = pellet
value_type = min
execute_on = 'initial timestep_end'
[]
[temperature_cladding_avg]
type = ElementAverageValue
variable = temperature
block = clad
execute_on = 'initial timestep_end'
[]
[temperature_cladding_max]
type = ElementExtremeValue
variable = temperature
block = clad
execute_on = 'initial timestep_end'
[]
[temperature_cladding_min]
type = ElementExtremeValue
variable = temperature
block = clad
value_type = min
execute_on = 'initial timestep_end'
[]
[temperature_liner_avg]
type = ElementAverageValue
variable = temperature
block = liner
execute_on = 'initial timestep_end'
[]
[temperature_liner_max]
type = ElementExtremeValue
variable = temperature
block = liner
execute_on = 'initial timestep_end'
[]
[temperature_liner_min]
type = ElementExtremeValue
variable = temperature
block = liner
value_type = min
execute_on = 'initial timestep_end'
[]
[ave_temperature_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = inside_surfaces
variable = temperature
execute_on = 'initial linear'
[]
[temperature_fuel_centerline_avg]
type = AxisymmetricCenterlineAverageValue
boundary = centerline
variable = temperature
execute_on = 'initial timestep_end'
[]
[temperature_fuel_centerline_max]
type = NodalExtremeValue
boundary = centerline
variable = temperature
execute_on = 'initial timestep_end'
[]
[temperature_fuel_centerline_min]
type = NodalExtremeValue
boundary = centerline
variable = temperature
value_type = min
execute_on = 'initial timestep_end'
[]
[temperature_fuel_surface_avg]
type = SideAverageValue
boundary = pellet_outer_radial_surface
variable = temperature
execute_on = 'initial timestep_end'
[]
[temperature_fuel_surface_max]
type = NodalExtremeValue
boundary = pellet_outer_radial_surface
variable = temperature
execute_on = 'initial timestep_end'
[]
[temperature_fuel_surface_min]
type = NodalExtremeValue
boundary = pellet_outer_radial_surface
variable = temperature
value_type = min
execute_on = 'initial timestep_end'
[]
# stresses
[stress_vonmises_fuel_avg]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[stress_vonmises_fuel_max]
type = ElementExtremeValue
variable = vonmises_stress
block = pellet
[]
[stress_vonmises_fuel_min]
type = ElementExtremeValue
variable = vonmises_stress
value_type = min
block = pellet
[]
[stress_hydro_fuel_avg]
type = ElementAverageValue
variable = hydrostatic_stress
block = pellet
[]
[stress_hydro_fuel_max]
type = ElementExtremeValue
variable = hydrostatic_stress
block = pellet
[]
[stress_hydro_fuel_min]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
# strain information
[strain_solid_swelling_fuel_avg]
type = ElementAverageValue
variable = solid_swelling
block = pellet
[]
[strain_volumetric_fuel_avg]
type = ElementAverageValue
variable = firstinv_strain
block = pellet
[]
[strain_axial_fuel_avg]
type = ParsedPostprocessor
pp_names = 'disp_y_fuel_top_surface_avg disp_y_fuel_bottom_surface_avg'
expression = '(disp_y_fuel_top_surface_avg - disp_y_fuel_bottom_surface_avg) / ${fuel_height}'
[]
[disp_y_fuel_top_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = top_of_top_pellet
[]
[disp_y_fuel_top_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = top_of_top_pellet
[]
[disp_y_fuel_bottom_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = bottom_of_bottom_pellet
[]
[disp_y_fuel_bottom_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = bottom_of_bottom_pellet
[]
[disp_x_fuel_radial_surface_max]
type = NodalExtremeValue
variable = disp_x
boundary = pellet_outer_radial_surface
[]
[disp_x_fuel_radial_surface_avg]
type = SideAverageValue
variable = disp_x
boundary = pellet_outer_radial_surface
[]
[disp_x_cladding_radial_surface_max]
type = NodalExtremeValue
variable = disp_x
boundary = clad_outside_right
[]
[disp_x_cladding_radial_surface_avg]
type = SideAverageValue
variable = disp_x
boundary = clad_outside_right
[]
[burnup_avg]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[burnup_max]
type = ElementExtremeValue
block = pellet
variable = burnup
[]
[fission_rate_avg]
type = ElementAverageValue
variable = fission_rate
block = pellet
execute_on = 'initial timestep_end'
[]
[fission_rate_max]
type = ElementExtremeValue
variable = fission_rate
block = pellet
execute_on = 'initial timestep_end'
[]
[dislocation_density_avg]
type = ElementAverageValue
variable = dislocation_density
block = pellet
execute_on = 'initial timestep_end'
[]
[porosity_fuel_avg]
type = ElementAverageValue
variable = porosity
block = pellet
execute_on = 'initial timestep_end'
[]
[porosity_fuel_max]
type = ElementExtremeValue
variable = porosity
block = pellet
execute_on = 'initial timestep_end'
[]
[porosity_fuel_min]
type = ElementExtremeValue
variable = porosity
value_type = min
block = pellet
execute_on = 'initial timestep_end'
[]
[swelling_dia_percent]
type = ParsedPostprocessor
pp_names = 'disp_x_fuel_radial_surface_avg'
expression = 'disp_x_fuel_radial_surface_avg / ${fparse pi * fuel_radius} * 100'
[]
[fuel_volume]
type = VolumePostprocessor
block = pellet
execute_on = 'TIMESTEP_END INITIAL'
use_displaced_mesh = true
[]
[swelling_vol_percent]
type = ParsedPostprocessor
pp_names = 'fuel_volume'
expression = '(fuel_volume - ${fuel_volume}) / ${fuel_volume} * 100'
[]
[gas_volume]
type = InternalVolume
boundary = inside_surfaces
execute_on = 'initial linear'
[]
# fission gas information
[deltav_v0_bubble_bulk]
type = ADElementAverageMaterialProperty
mat_prop = deltav_v0_bubble_bulk
block = pellet
[]
[deltav_v0_bd]
type = ADElementAverageMaterialProperty
mat_prop = deltav_v0_bd
block = pellet
[]
[deltav_v0_bubble_intra_dislocation]
type = ADElementAverageMaterialProperty
mat_prop = deltav_v0_bubble_intra_dislocation
block = pellet
[]
[fg_produced]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_generated_total
block = pellet
[]
[fg_released]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_release_total
block = pellet
[]
[fgr_percent]
type = ParsedPostprocessor
pp_names = 'fg_released fg_produced'
expression = 'fg_released / fg_produced * 100'
[]
[fg_grain_boundary]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_GB_bubble_volume
block = pellet
[]
[fg_matrix]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_matrix_intra
block = pellet
[]
[fg_intra_bubble]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_bubble_intra
block = pellet
[]
[fg_dislocation]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_bubble_intra_dislocation
block = pellet
[]
[gas_conservation]
type = ParsedPostprocessor
pp_names = 'fg_produced fg_released fg_dislocation fg_intra_bubble fg_matrix fg_grain_boundary'
expression = 'fg_produced - fg_released - fg_dislocation - fg_intra_bubble - fg_matrix - fg_grain_boundary'
[]
[GBcoverage_max]
type = ElementExtremeValue
variable = GBCoverage
block = pellet
[]
[GBcoverage_min]
type = ElementExtremeValue
variable = GBCoverage
value_type = min
block = pellet
[]
[GBcoverage_avg]
type = ElementAverageValue
variable = GBCoverage
block = pellet
[]
# extras
[actual_time_step_limit]
type = MaterialTimeStepPostprocessor
outputs = none
block = 'pellet'
[]
[time_step_limit]
type = ParsedPostprocessor
expression = 'if(actual_time_step_limit > 1e6, 1e6, actual_time_step_limit)'
pp_names = 'actual_time_step_limit'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[coolant_temperature]
type = FunctionValuePostprocessor
function = coolant_wall_temperature
[]
[]
[VectorPostprocessors]
[centerline]
type = SideValueSampler
boundary = centerline
variable = 'temperature fission_rate'
sort_by = y
outputs = base
[]
[cladding_surface]
type = SideValueSampler
boundary = clad_outside_right
variable = 'temperature fission_rate disp_x'
sort_by = y
outputs = base
[]
[midplane]
type = LineValueSampler
start_point = '0 ${fparse pin_height / 2} 0'
end_point = '${fuel_radius} ${fparse pin_height / 2} 0'
variable = 'temperature fission_rate'
num_points = 11
sort_by = x
outputs = base
[]
[]
[PerformanceMetricOutputs]
outputs = 'out console base'
[]
[Outputs]
perf_graph = true
sync_times = '1e2 1e3 5e3 1e4 5e4 1e5 5e5 1e6 2e6 3e6 4e6 5e6 6e6 7e6 8e6 9e6 1e7 ${time_end_ramp_up} ${time_start_ramp_down} ${time_end_ramp_down} ${total_time}'
file_base = '${group_name}_out'
[out]
type = Exodus
time_step_interval = 10
[]
[sync]
type = CSV
file_base = '${group_name}_sync_out'
show = 'burnup_avg temperature_fuel_avg temperature_fuel_max temperature_cladding_avg temperature_cladding_max temperature_liner_avg swelling_vol_percent fgr_percent fission_rate_avg fission_rate_max porosity_fuel_avg porosity_fuel_max'
sync_only = true
[]
[PIE_out]
type = CSV
file_base = '${group_name}_PIE_out'
show = 'burnup_avg fgr_percent swelling_vol_percent'
execute_on = 'FINAL'
[]
[checkpoint]
type = Checkpoint
time_step_interval = 10
[]
[base]
type = CSV
file_base = '${group_name}_csvs/${group_name}_base_out'
[]
[console]
type = Console
show = 'temperature_cladding_avg temperature_cladding_max GBcoverage_max GBcoverage_avg fgr_percent gas_conservation time_step_limit time_step_size temperature_fuel_avg temperature_fuel_max stress_vonmises_fuel_max stress_hydro_fuel_max stress_hydro_fuel_min strain_axial_fuel_avg burnup_avg fission_rate_avg porosity_fuel_avg disp_x_fuel_radial_surface_max disp_x_cladding_radial_surface_max swelling_vol_percent'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temperature'
show_var_residual_norms = true
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK9/FK09.i)
# This file was created using BIF with the following inputs:
# FK06/FK06.var - md5sum: 5a60c05af67ba840a89caacf70b852e2
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
initial_gas_types = 'He Ar'
initial_fractions = '0.25 0.75'
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.1e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.30e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/Super_Ramp/analysis/Super_Ramp_Base.i)
#This is a partial input file base with information/features common to several experiments within this assessment
#NOTE: This file will NOT run on its own, it requires a PK#X.params file and a PK##.params file to run
# physical constants
R = 8.3143 # (J/K*mol) -- THIS SHOULD BE EDITED TO USE PHYSICALCONSTANTS' VALUE
# fuel isotope fractions and fission energy
energy_per_fission = 3.28451e-11 # (J/fission)
isotope_fraction_Pu239 = 0.0
isotope_fraction_Pu240 = 0.0
isotope_fraction_Pu241 = 0.0
isotope_fraction_Pu242 = 0.0
# rod geometry
clad_bot_gap_height = 1.0e-3 # (m)
# variable and kernel initial values
initial_temperature = 293.15 # (K)
gravity_constant = -9.81 # (m/s^2)
# fuel/cladding contact
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
roughness_secondary = 1.0e-6 # (m)
roughness_primary = 2.0e-6 # (m)
roughness_coef = 3.2
jump_distance_model = LANNING
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
# plenum parameters
initial_pressure = 2.25e6 # (Pa)
startup_time = 0 # (s)
# fuel/clad material properties
fuel_cracking_stress = 1.68e8
stress_free_temperature = 293.15 # (K)
clad_density = 6550.0 # (kg/m^3)
# numerical options
l_max_its = 100
l_tol = 1e-4
nl_max_its = 30
start_time = 0.0 # s
dtmin = 1.0 # s
[GlobalParams]
density = ${fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = false
initial_porosity = ${initial_fuel_porosity}
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temperature'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = ${number_pellets}
pellet_height = ${pellet_height}
pellet_outer_radius = ${pellet_outer_radius}
pellet_mesh_density = customize
nx_p = 11
ny_p = 84
clad_mesh_density = customize
nx_c = 4
ny_c = 84
clad_gap_width = ${clad_gap_width}
clad_thickness = ${clad_thickness}
clad_bot_gap_height = ${clad_bot_gap_height}
bottom_clad_height = ${bottom_clad_height}
top_clad_height = ${top_clad_height}
clad_top_gap_height = ${clad_top_gap_height}
ny_cu = 3
ny_cl = 3
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = ${power_history_data_file}
format = columns
[]
[axial_power_factors]
type = PiecewiseBilinear
data_file = ${axial_power_factors_data_file}
axis = 1
[]
[clad_out_temp]
type = PiecewiseLinear
data_file = ${clad_out_temp_data_file}
format = columns
[]
[axial_temp_factors]
type = PiecewiseBilinear
data_file = ${axial_temp_factors_data_file}
axis = 1
[]
[clad_temp_bc]
type = CompositeFunction
functions = 'clad_out_temp axial_temp_factors'
[]
[coolant_pressure]
type = PiecewiseLinear
data_file = ${coolant_pressure_data_file}
format = columns
[]
[fast_flux]
type = PiecewiseLinear
data_file = ${fast_neutron_flux_data_file}
format = columns
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = ${initial_grain_radius}
[]
[porosity]
order = CONSTANT
family = MONOMIAL
block = pellet
initial_condition = ${initial_fuel_porosity}
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[sat_coverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gaseous_porosity]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[layered_average_contact_pressure]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
temperature = temperature
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
temperature = temperature
add_variables = true
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[gravity]
type = Gravity
variable = disp_y
value = ${gravity_constant}
block = '1 3'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temperature
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = fast_flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[porosity]
type = PorosityAuxUO2
block = pellet
variable = porosity
execute_on = linear
[]
[pelletid]
type = PelletIdAux
block = pellet
variable = pellet_id
fuel_pin_geometry = pin_geometry
number_pellets = ${number_pellets}
execute_on = initial
[]
[oxi_thickness]
type = MaterialRealAux
variable = oxide_thickness
property = oxide_scale_thickness
boundary = 2
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
[]
[stcvrg]
type = MaterialRealAux
variable = sat_coverage
property = sat_coverage
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
[]
[gaspor]
type = MaterialRealAux
variable = gaseous_porosity
property = gaseous_porosity
[]
[fuel_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[layered_average_contact_pressure]
type = SpatialUserObjectAux
block = pellet
variable = layered_average_contact_pressure
execute_on = nonlinear
user_object = layered_average_contact_pressure
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
block = pellet
execute_on = nonlinear
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
num_radial = 80
num_axial = 20
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
RPF = RPF
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = ${friction_coefficient}
c_normal = ${c_normal}
c_tangential = ${c_tangential}
tangential_lm_scaling = ${tangential_lm_scaling}
normal_lm_scaling = ${normal_lm_scaling}
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
roughness_secondary = ${roughness_secondary}
roughness_primary = ${roughness_primary}
roughness_coef = ${roughness_coef}
plenum_pressure = plenum_pressure
jump_distance_model = ${jump_distance_model}
contact_pressure = ${contact_pressure}
thermal_lm_scaling = ${thermal_lm_scaling}
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = 5
outer_surfaces = 10
temperature = temperature
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temperature
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_pressure
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = ${initial_pressure}
startup_time = ${startup_time}
R = ${R}
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = ${fuel_density}
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
density = ${fuel_density}
temperature = temperature
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temperature
burnup_function = burnup
initial_grain_radius = ${initial_grain_radius}
[]
[fuel_stress]
type = ComputeSmearedCrackingStress
block = pellet
cracking_stress = ${fuel_cracking_stress}
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
model_relocation_recovery = true
max_relocation_recovery_fraction = 0.5
relocation_scaling_factor = 1
volumetric_swelling_increment = vol_swell_increment
layered_average_contact_pressure = layered_average_contact_pressure
outputs = all
output_properties = 'relocation_strain recovered_relocation_strain'
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = pellet
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = fuel_thermal_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
hydrostatic_stress = hydrostatic_stress
diff_coeff_option = TURNBULL_D1_4D2_D3
transient_option = MICROCRACKING_BURNUP
res_param_option = HETEROGENEOUS_WHITE
ig_bubble_model = NUCLEATION_RESOLUTION
ig_diff_algorithm = polypole2
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
pellet_id = pellet_id
pellet_brittle_zone = pbz
ath_model = true
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${fuel_density}
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
fast_neutron_fluence = fast_neutron_fluence
temperature = temperature
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = ${clad_density}
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
fuel_pin_geometry = pin_geometry
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = ${petsc_options_value}
line_search = 'none'
verbose = true
l_max_its = ${l_max_its}
l_tol = ${l_tol}
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
start_time = ${start_time}
n_startup_steps = 1
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = ${optimal_iterations}
iteration_window = ${iteration_window}
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[central_fuel_temp]
type = NodalVariableValue
variable = temperature
nodeid = 3110 #Mesh dependent!
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[midplane_hoop_strain_inner_clad]
type = ElementalVariableValue
elementid = 209 # Mesh dependent
variable = strain_zz
execute_on = 'initial timestep_end'
[]
[midplane_hoop_stress_inner_clad]
type = ElementalVariableValue
elementid = 209 # Mesh dependent
variable = hoop_stress
execute_on = 'initial timestep_end'
[]
[midplane_contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 3141 # Mesh dependent
execute_on = 'initial timestep_end'
[]
[total_rod_integral_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[total_rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = ${scale_factor}
[]
[vol_swell_increment]
type = SideAverageIncrementTensorComponent
boundary = 10
variable = volumetric_swelling_strain
execute_on = nonlinear
[]
[midplane_clad_outer_temp]
type = NodalVariableValue
nodeid = 757 # Mesh dependent
variable = temperature
[]
[midplane_clad_inner_temp]
type = NodalVariableValue
nodeid = 747 # Mesh dependent
variable = temperature
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
color = false
[csv]
type = CSV
file_base = '${id}_csv'
[]
[exodus]
type = Exodus
file_base = '${id}_exodus'
[]
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = '${id}_chkfile'
show = 'average_burnup fission_gas_released_percentage central_fuel_temp midplane_contact_pressure'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[pbz]
type = PelletBrittleZone
block = pellet
pellet_id = pellet_id
temperature = temperature
fuel_pin_geometry = pin_geometry
number_pellets = ${number_pellets}
execute_on = 'initial linear'
[]
[layered_average_contact_pressure]
type = LayeredSideAverage
variable = contact_pressure
direction = y
num_layers = 1
execute_on = timestep_end
boundary = 10
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_B/x441_leg_B.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_swelling'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = MaterialRealAux
variable = porosity
property = porosity
block = pellet
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrain
block = pellet
temperature = temp
# hydrostatic_stress = hydrostatic_stress
hydrostatic_stress = 1e6
eigenstrain_name = fuel_volumetric_swelling
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_legacy_swell
[out2]
type = CSV
file_base = x441_${group_name}_legacy_swell_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_legacy_swell_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_legacy_swell_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/MOX/JOYO/MK-II/analysis/MK-II_master_new_bubble_gb_lim.i)
initial_fuel_density = 10920.4
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.07
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.55
pellet_outer_radius = 0.002315
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000085
clad_thickness = 0.00035
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.549
elem_type = QUAD8
nx_c = 4
ny_c = 100
nx_p = 10
ny_p = 100
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = '0 70000 12970000'
y = '0 48827.8 48827.8'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 70000 12970000'
y = '0 2.6e+19 2.6e+19'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0 0.065 0.134 0.202 0.271 0.339 0.406 0.519'
y = '0 12970000'
z = '0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672 0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = '0 70000 12970000'
y = '0 40000 40000'
[]
[clad_surface_temp]
type = PiecewiseBilinear
x = '0 0.065 0.134 0.202 0.271 0.339 0.406 0.519'
y = '0 12970000'
z = '295 295 295 295 295 295 295 295 416.36 422.49 428.63 434.27 439.36 444.71 450.07 455.48'
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.07
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.00463
execute_on = timestep_begin
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp_clad_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_surface_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 101325
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 300000
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10920.4
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
diff_coeff_option = TURNBULL_D1_4D2_4D3
fission_rate = fission_rate
grain_radius_const = 8.01e-6
bubble_gb_limit = 1.0e+11
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-3
fixed_point_rel_tol = 1e-3
fixed_point_max_its = 1
l_max_its = 70
l_tol = 8e-3
nl_max_its = 70
nl_rel_tol = 1e-3
nl_abs_tol = 1e-3
start_time = 0
n_startup_steps = 1
end_time = 12970000
dtmax = 5e5
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 5000
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.55 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = MK-II_sub_new_bubble_gb_lim.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'temp disp_x disp_y'
[]
(examples/multiapp/pin2.i)
## In this example the multiapp system is called to run another BISON simulation.
## (input1.i calls input2.i) An application of this might be multiple fuel pins
## in an assembly. This example also demonstrates the internal mesh maker.
initial_fuel_density = 10200
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
a_lower = 0.06951
a_upper = 3.72711
initial_porosity = 0.04
[]
# ==================================================== #
# Mesh (and Geometry, internally-meshed)
# ==================================================== #
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
clad_thickness = 0.0005
pellet_outer_radius = 0.0041
clad_bot_gap_height = 0.00152
clad_top_gap_height = 0.16
pellet_quantity = 1
pellet_height = 3.6576
clad_gap_width = 8.0e-05
bottom_clad_height = 0.0167
top_clad_height = 0.0167
nx_p = 6 # number of radial elements in the fuel
ny_p = 48 # number of axial elements in the fuel
nx_c = 3 # number of elements in the clad thickness
ny_c = 48 # number of elements in the axially in the clad
ny_cu = 1
ny_cl = 1
intervals = '0.03866 0.08211 0.08211 0.08211 0.08212 0.08211 0.08211 0.08211 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.079212 0.079212 0.079212 0.079212 0.079212'
elem_type = QUAD4
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 10
patch_update_strategy = auto
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 493
[]
# ==================================================== #
# Dimensions and Primary Variables
# ==================================================== #
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 3.000000e+02
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
# ==================================================== #
# Auxiliary Variables
# ==================================================== #
[AuxVariables]
# ================================================== #
# Nodal Quantities
# ================================================== #
[htcl]
initial_condition = 500.0
[]
[htcv]
initial_condition = 0.0
[]
[Tl]
initial_condition = 565.0
[]
[Tv]
initial_condition = 565.0
[]
[burnup]
block = 3
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 5.240000e-06
[]
# ================================================== #
# Constant Monomial Quantities (Non-Mechanics)
# ================================================== #
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[axial_fission_rate]
order = CONSTANT
family = MONOMIAL
[]
[axial_burnup]
order = CONSTANT
family = MONOMIAL
[]
[axial_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.04
[]
[]
# ==================================================== #
# Time- and Space-Dependent Source and BCs
# ==================================================== #
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
x = '-100 0 5000'
y = '0 0 25000'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_temperature]
type = PiecewiseLinear
x = '-100 0'
y = '293 565'
axis = y
[]
[coolant_pressure_ramp]
# used in coolantPressure BC
type = PiecewiseLinear
scale_factor = 1
x = '0 10000.0'
y = '0 1.0'
[]
[]
# ==================================================== #
# Burnup Equation Set
# ==================================================== #
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
isotopes = 'U235 U238'
isotope_fractions = '3.100e-02 9.690e-01'
RPF = RPF
[]
[]
# ==================================================== #
# Primary Kernels used in Heat Transfer
# ==================================================== #
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
extra_vector_tags = 'ref'
block = 3
[]
[]
[AuxKernels]
# ================================================== #
# Pre-Defined Types
# ================================================== #
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
factor = 1.27e+14 # (n/m2-s per W/m)
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = linear
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
execute_on = linear
[]
# ================================================== #
# Other General Types
# ================================================== #
[axial_burnup]
type = SpatialUserObjectAux
block = 3
variable = axial_burnup
user_object = axial_burnup
execute_on = timestep_begin
[]
[axial_temperature]
type = SpatialUserObjectAux
block = 3
variable = axial_temperature
user_object = axial_temperature
execute_on = timestep_begin
[]
[]
# ==================================================== #
# Mechanical and Thermal Contact
# ==================================================== #
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
normal_smoothing_distance = 0.1
model = frictionless
formulation = Kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.200000e+00
roughness_primary = 1.8e-06
roughness_secondary = 8e-07
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 0.0001
normal_smoothing_distance = 0.1
order = FIRST
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[convective_clad_surface_bottom]
type = ConvectiveFluxBC
boundary = '1 2 3'
variable = temp
rate = 38200.0 #convection coefficient (h)
initial = 565.0
final = 585.0
duration = 1.0e4 #duration of initial power ramp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.55132e+07
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 1.99948e+06
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
# ==================================================== #
# Specification of Material Properties
# ==================================================== #
[Materials]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
diameter = 0.008192
diametral_gap =0.000168
# Average burnup at which fuel comes into contact with clad at 25kW/m
burnup_relocation_stop = 0.0315
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10200.0
eigenstrain_name = fuel_volumetric_strain
total_densification = 0.01
[]
[fission_gas_release]
type = UO2Sifgrs
axial_power_profile = axial_peaking_factors
block = 3
burnup = burnup
fission_rate = fission_rate
hydrostatic_stress = hydrostatic_stress
grain_radius = grain_radius
pellet_brittle_zone = pbz
pellet_id = pellet_id
rod_ave_lin_pow = linear_heat_rate_profile
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 7833
[]
[]
# ==================================================== #
# User Objects for Output Processing
# ==================================================== #
[UserObjects]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.0041
number_pellets = 1
execute_on = linear
[]
[averagefissionrate]
type = LayeredAverage
block = 3
variable = fission_rate
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[average_temp]
type = LayeredAverage
block = 3
variable = temp
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[averagebu]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[casl_average_fission_rate]
variable = fission_rate
type = LayeredAverage
block = 3
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[surface_temp]
type = LayeredSideAverage
boundary = 2
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[axial_temperature]
type = LayeredAverage
block = 3
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[axial_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[integral_temperature]
type = LayeredAverage
block = 3
variable = temp
direction = y
num_layers = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
execute_on = timestep_begin
[]
[average]
type = LayeredAverage
block = 3
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[axial_surface_temperature]
type = LayeredSideAverage
boundary = 2
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[rod_avg_fast_fluence]
type = LayeredSideAverage
boundary = 2
variable = fast_neutron_fluence
direction = y
num_layers = 1
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[casl_clad_surface_heat_flux]
type = LayeredSideDiffusiveFluxAverage
variable = temp
boundary = 2
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
diffusivity = thermal_conductivity
execute_on = timestep_begin
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 293
[]
[]
# ==================================================== #
# Solver Options
# ==================================================== #
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
verbose = true
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
# ================================================== #
# Time Step Control
# ================================================== #
start_time = -100
end_time = 5e6
dtmin = 0.1
dtmax = 1e6
dt = 10
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
optimal_iterations = 1000
time_t = '0 1.0e4 53200 1.0e5'
time_dt = '1.0e3 1.0e3 1.0e3 1.0e5'
[]
[]
[Postprocessors]
# ================================================== #
# Required for Fission Gas Release Models
# ================================================== #
[ave_temp_interior]
# used to compute temperature of plenum
type = SideAverageValue
boundary = 9
variable = temp
outputs = exodus
execute_on = 'initial linear'
[]
[fission_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[gas_volume]
type = InternalVolume
boundary = 9
outputs = exodus
execute_on = 'initial linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[_dt]
type = TimestepSize
execute_on = timestep_end
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
# ==================================================== #
# Location and format of output
# ==================================================== #
[Outputs]
perf_graph = true
exodus = true
file_base = pin2_output
time_step_interval = 1
[console]
type = Console
max_rows = 25
output_linear = true
[]
[]
(examples/constituent_redistribution/2d_thermo.i)
# This example demonstrates how to loosely couple the metallic fuel constituent
# redistribution model provided by ADUPuZrPhaseLookup and ADUPuZrMobility to a
# thermo solve using the MultiApps system. This file contains the AD thermo
# solve. The composition solve is contained in 2d_composition.i, which is
# executed as a SubApp. The MultiApps system allows for use of different mesh
# resolutions and solver options. The problem simulates irradiation of
# Experimental Breeder Reactor II Fuel Element DP81. The predicted zirconium
# profile (X_Zr) can be compared to the experimental EPMA scan stored in
# (X_Zr_ref) [1]. This example runs in about 4 minutes on 2 processors using
# the Newton method.
# References
# [1]: Hofman, G. L., Hayes, S. L., and Petri, M. C. Temperature Gradient
# Driven Constituent Redistribution in U-Zr Alloys. Journal of Nuclear
# Materials 227 (1996). 277-286.
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 3.810e-04
pellet_outer_radius = 2.192e-03
pellet_height = 3.428e-01
clad_top_gap_height = 2.714e-01
clad_gap_width = 3.480e-04
bottom_clad_height = 2.240e-03
top_clad_height = 2.240e-03
clad_bot_gap_height = 3.100e-04
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 10
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = 3
ny_cl = 3
pellet_quantity = 1
elem_type = QUAD8
[]
[radial_slice]
type = BoundingBoxNodeSetGenerator
input = smeared_pellet_mesh
new_boundary = radial_slice
bottom_left = '-0.001e-03 2.688e-01 0'
top_right = '2.193e-03 2.690e-01 0'
[]
construct_side_list_from_node_list = true
[]
[MultiApps]
[composition]
type = TransientMultiApp
app_type = BisonApp
positions = '0 0 0'
input_files = 2d_composition.i
catch_up = true
max_catch_up_steps = 2
[]
[]
[Transfers]
[to_sub_T]
type = MultiAppGeometricInterpolationTransfer
to_multi_app = composition
source_variable = T
variable = T
[]
[from_sub_xZr]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = composition
source_variable = X_Zr
variable = X_Zr
[]
[from_sub_alpha]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = composition
source_variable = alpha
variable = alpha
[]
[from_sub_beta]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = composition
source_variable = beta
variable = beta
[]
[from_sub_gamma]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = composition
source_variable = gamma
variable = gamma
[]
[from_sub_delta]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = composition
source_variable = delta
variable = delta
[]
[from_sub_zeta]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = composition
source_variable = zeta
variable = zeta
[]
[]
[Variables]
[T]
order = SECOND
family = LAGRANGE
initial_condition = 298
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = T
order = SECOND
quadrature = true
gap_conductivity = 61.0
min_gap = 3.480e-04
primary = 5
secondary = 10
[]
[]
[CoolantChannel]
[convective_clad_surface]
variable = T
inlet_temperature = f_T_coolant_in
inlet_pressure = f_coolant_pressure
inlet_massflux = 2.315e+03
coolant_material = sodium
linear_heat_rate = f_power
axial_power_profile = f_axial_power
subchannel_geometry = triangular
rod_diameter = 5.842e-03
rod_pitch = 6.909e-03
thermal_conductivity = thermal_conductivity_reg
boundary = '1 2 3'
[]
[]
[Kernels]
# Transient heat generation and conduction
[heat_dt]
type = ADHeatConductionTimeDerivative
variable = T
specific_heat = specific_heat
density_name = density
[]
[heat_conduction]
type = ADHeatConduction
variable = T
thermal_conductivity = thermal_conductivity
[]
[heat_source]
type = ADFissionRateHeatSource
block = pellet
variable = T
fission_rate = fission_rate
[]
[]
[AuxVariables]
[gap_conductance_aux]
order = CONSTANT
family = MONOMIAL
[]
[X_Pu]
block = pellet
[]
[X_Zr]
block = pellet
[]
[X_Zr_ref]
block = pellet
[InitialCondition]
type = FunctionIC
function = f_X_Zr_ref
[]
[]
[alpha]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[beta]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gamma]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[delta]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[zeta]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[f_power]
type = PiecewiseLinear
x = '0 100000 4420000 5111200 11504800 18157600 24969600'
y = '0 31816 30504 29848 30504 29192 29192'
[]
[f_coolant_pressure]
type = PiecewiseLinear
x = '0 24969600'
y = '0.151e6 0.151e6'
[]
[f_T_coolant_in]
type = PiecewiseLinear
x = '0 1e5 24959600 24969600'
y = '298.0 644.0 644.0 644.0'
[]
[f_axial_power]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 3.428e-01
pellet_y_start = 2.440e-03
[]
[f_X_Zr_ref]
type = SplineFunction
x = '0.000e+00 1.099e-05 2.197e-05 3.296e-05 4.394e-05 5.493e-05 6.591e-05 7.690e-05 8.788e-05 9.887e-05 1.099e-04 1.208e-04 1.318e-04 1.428e-04 1.538e-04 1.648e-04 1.758e-04 1.867e-04 1.977e-04 2.087e-04 2.197e-04 2.307e-04 2.417e-04 2.527e-04 2.636e-04 2.746e-04 2.856e-04 2.966e-04 3.076e-04 3.186e-04 3.296e-04 3.405e-04 3.515e-04 3.625e-04 3.735e-04 3.845e-04 3.955e-04 4.064e-04 4.174e-04 4.284e-04 4.394e-04 4.504e-04 4.614e-04 4.724e-04 4.833e-04 4.943e-04 5.053e-04 5.163e-04 5.273e-04 5.383e-04 5.493e-04 5.602e-04 5.712e-04 5.822e-04 5.932e-04 6.042e-04 6.152e-04 6.261e-04 6.371e-04 6.481e-04 6.591e-04 6.701e-04 6.811e-04 6.921e-04 7.030e-04 7.140e-04 7.250e-04 7.360e-04 7.470e-04 7.580e-04 7.690e-04 7.799e-04 7.909e-04 8.019e-04 8.129e-04 8.239e-04 8.349e-04 8.458e-04 8.568e-04 8.678e-04 8.788e-04 8.898e-04 9.008e-04 9.118e-04 9.227e-04 9.337e-04 9.447e-04 9.557e-04 9.667e-04 9.777e-04 9.887e-04 9.996e-04 1.011e-03 1.022e-03 1.033e-03 1.044e-03 1.055e-03 1.066e-03 1.077e-03 1.088e-03 1.099e-03 1.109e-03 1.120e-03 1.131e-03 1.142e-03 1.153e-03 1.164e-03 1.175e-03 1.186e-03 1.197e-03 1.208e-03 1.219e-03 1.230e-03 1.241e-03 1.252e-03 1.263e-03 1.274e-03 1.285e-03 1.296e-03 1.307e-03 1.318e-03 1.329e-03 1.340e-03 1.351e-03 1.362e-03 1.373e-03 1.384e-03 1.395e-03 1.406e-03 1.417e-03 1.428e-03 1.439e-03 1.450e-03 1.461e-03 1.472e-03 1.483e-03 1.494e-03 1.505e-03 1.516e-03 1.527e-03 1.538e-03 1.549e-03 1.560e-03 1.571e-03 1.582e-03 1.593e-03 1.604e-03 1.615e-03 1.626e-03 1.637e-03 1.648e-03 1.659e-03 1.670e-03 1.681e-03 1.692e-03 1.703e-03 1.714e-03 1.725e-03 1.736e-03 1.747e-03 1.758e-03 1.769e-03 1.780e-03 1.791e-03 1.802e-03 1.813e-03 1.824e-03 1.834e-03 1.845e-03 1.856e-03 1.867e-03 1.878e-03 1.889e-03 1.900e-03 1.911e-03 1.922e-03 1.933e-03 1.944e-03 1.955e-03 1.966e-03 1.977e-03 1.988e-03 1.999e-03 2.010e-03 2.021e-03 2.032e-03 2.043e-03 2.054e-03 2.065e-03 2.076e-03 2.087e-03 2.098e-03 2.109e-03 2.120e-03 2.131e-03 2.142e-03 2.153e-03 2.164e-03 2.175e-03 2.186e-03'
y = '3.885e-01 3.885e-01 3.734e-01 3.590e-01 3.453e-01 3.801e-01 4.422e-01 4.596e-01 4.215e-01 3.965e-01 3.933e-01 4.167e-01 4.431e-01 4.037e-01 4.095e-01 4.104e-01 4.010e-01 3.799e-01 3.995e-01 4.261e-01 4.421e-01 4.450e-01 4.256e-01 4.510e-01 5.115e-01 4.718e-01 4.138e-01 4.158e-01 4.454e-01 3.952e-01 2.708e-01 1.811e-01 2.932e-01 3.956e-01 4.010e-01 4.438e-01 4.706e-01 4.574e-01 3.943e-01 3.271e-01 3.642e-01 4.024e-01 3.875e-01 3.970e-01 4.123e-01 4.326e-01 4.353e-01 4.202e-01 3.674e-01 3.546e-01 3.746e-01 4.111e-01 4.174e-01 3.858e-01 3.380e-01 3.172e-01 3.418e-01 3.884e-01 4.080e-01 3.816e-01 3.655e-01 3.654e-01 3.654e-01 3.677e-01 3.751e-01 3.649e-01 3.557e-01 3.597e-01 3.655e-01 3.656e-01 3.542e-01 3.659e-01 3.575e-01 3.202e-01 2.908e-01 3.047e-01 3.069e-01 3.287e-01 3.847e-01 3.949e-01 3.514e-01 3.297e-01 3.263e-01 3.546e-01 3.581e-01 3.608e-01 3.121e-01 2.694e-01 2.931e-01 3.235e-01 2.970e-01 2.552e-01 2.159e-01 1.917e-01 2.040e-01 2.168e-01 1.825e-01 1.284e-01 7.370e-02 4.785e-02 1.842e-02 7.600e-03 7.420e-03 1.751e-02 6.518e-02 7.871e-02 7.470e-02 6.046e-02 1.203e-01 2.068e-01 1.903e-01 8.591e-02 4.031e-02 2.911e-02 5.307e-02 8.001e-02 1.061e-01 1.072e-01 7.464e-02 4.104e-02 3.966e-02 7.244e-02 8.140e-02 7.180e-02 9.492e-02 1.281e-01 1.213e-01 1.188e-01 1.617e-01 2.258e-01 2.321e-01 1.980e-01 1.650e-01 1.621e-01 2.045e-01 2.132e-01 1.669e-01 1.865e-01 2.431e-01 2.144e-01 1.597e-01 1.821e-01 1.962e-01 1.905e-01 2.026e-01 2.446e-01 2.788e-01 2.705e-01 2.518e-01 2.454e-01 2.472e-01 2.465e-01 2.963e-01 3.190e-01 2.726e-01 2.280e-01 2.382e-01 2.713e-01 2.889e-01 2.408e-01 2.094e-01 2.454e-01 2.894e-01 2.808e-01 2.695e-01 2.769e-01 2.813e-01 2.802e-01 2.810e-01 3.856e-01 4.359e-01 3.762e-01 4.293e-01 4.049e-01 3.155e-01 2.501e-01 2.662e-01 3.887e-01 4.248e-01 3.808e-01 3.120e-01 2.897e-01 2.816e-01 2.762e-01 2.350e-01 2.032e-01 2.147e-01 2.246e-01 3.273e-01 3.938e-01 3.301e-01 2.641e-01 2.351e-01 2.482e-01 2.716e-01 2.403e-01 2.083e-01 1.802e-01 1.772e-01 2.982e-01'
[]
[]
[Materials]
[fuel_density]
type = ADGenericConstantMaterial
block = pellet
prop_names = density
prop_values = 1.580e+04
[]
# Heat generation and conduction
[fission_rate]
type = ADUPuZrFissionRate
block = pellet
X_Pu_function = 0
initial_X_Zr = 0.225
X_Zr = X_Zr
rod_linear_power = f_power
axial_power_profile = f_axial_power
pellet_radius = 2.192e-03
[]
[burnup]
type = ADUPuZrBurnup
block = pellet
initial_X_Pu = 0
initial_X_Zr = 0.225
density = 1.580e+04
outputs = all
[]
[gaseous_swelling]
type = ADUPuZrGaseousEigenstrain
block = pellet
eigenstrain_name = gaseous_swelling_eigenstrain
temperature = T
initial_porosity = 0
bubble_number_density = 1e20
outputs = 'all'
output_properties = 'gaseous_porosity porosity gas_swelling'
[]
[solid_swelling]
type = ADBurnupDependentEigenstrain
block = pellet
eigenstrain_name = solid_swelling_eigenstrain
swelling_name = solid_swelling
outputs = all
[]
[sodium_logging]
type = ADUPuZrSodiumLogging
block = pellet
porosity = porosity
interconnectivity = interconnectivity
sodium_infiltration_fraction = 0.08
outputs = all
[]
[fuel_thermal_conductivity]
type = ADUPuZrThermal
block = pellet
temperature = T
X_Zr = X_Zr
X_Pu = X_Pu
thcond_model = lanl
porosity_model = logged
porosity = porosity
sodium_logged_porosity = sodium_logged_porosity
spheat_model = savage
[]
[fission_gas_release]
type = ADUPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
porosity = porosity
[]
[clad_density]
type = ADGenericConstantMaterial
block = clad
prop_names = density
prop_values = 7874.0
[]
[clad_thermal_conductivity]
type = ADHT9Thermal
block = clad
temperature = T
[]
[clad_thermal_conductivity_converter]
# This material creates a non-AD version of the cladding thermal
# conductivity, which is used by the CoolantChannel model.
type = MaterialADConverter
block = clad
ad_props_in = thermal_conductivity
reg_props_out = thermal_conductivity_reg
[]
[]
[AuxKernels]
[gap_conductance_aux]
type = MaterialRealAux
variable = gap_conductance_aux
property = gap_conductance
boundary = 10
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
automatic_scaling = true
compute_scaling_once = false
scheme = bdf2
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = none
l_max_its = 15
l_tol = 1e-3
nl_max_its = 15
nl_rel_tol = 1e-6
nl_abs_tol = 1e-6
dtmin = 10
dtmax = 1e6
end_time = 24969600
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e5
iteration_window = 2
optimal_iterations = 9
growth_factor = 1.1
cutback_factor = 0.5
[]
[]
[Postprocessors]
[T_cl]
type = PointValue
variable = T
point = '0 2.689e-01 0'
[]
[burnup_avg]
type = SideAverageValue
variable = burnup
boundary = radial_slice
[]
[porosity_avg]
type = SideAverageValue
variable = porosity
boundary = radial_slice
[]
[logged_sodium_avg]
type = SideAverageValue
variable = sodium_logged_porosity
boundary = radial_slice
[]
[gas_porosity_avg]
type = SideAverageValue
variable = gaseous_porosity
boundary = radial_slice
[]
[solid_swelling_avg]
type = SideAverageValue
variable = solid_swelling
boundary = radial_slice
[]
[gaseous_swelling_avg]
type = SideAverageValue
variable = gas_swelling
boundary = radial_slice
[]
[fis_gas_produced]
type = ADElementIntegralMaterialProperty
block = pellet
mat_prop = fis_gas_prod
[]
[fis_gas_released]
type = ADElementIntegralMaterialProperty
block = pellet
mat_prop = fis_gas_rel
execute_on = 'initial timestep_end'
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[]
[VectorPostprocessors]
[profiles]
type = LineValueSampler
variable = 'T X_Pu X_Zr X_Zr_ref alpha beta gamma delta zeta'
sort_by = x
start_point = '0 2.689e-01 0'
end_point = '2.192e-03 2.689e-01 0'
num_points = 11
[]
[]
[Outputs]
perf_graph = true
exodus = true
[csv]
type = CSV
execute_vector_postprocessors_on = final
[]
[]
(test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_intervals1.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
intervals = '0.01186 0.01186'
intervals_ny = '2 4'
ny_c_plenum = 12
ny_c_bot_gap = 6
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
preset = false
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
exodus = true
[]
(test/tests/sodium_coolant_channel/dp16.i)
# This test applies the new coolant channel model to a realistic geometry, e.g. dp16 from EBR-II.
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
# rod specific parameters
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.381e-03
pellet_outer_radius = 2.184e-03
pellet_height = 3.442e-01
clad_top_gap_height = 2.949e-01
clad_gap_width = 3.556e-04
bottom_clad_height = 2.24e-3 # arbitrary
top_clad_height = 2.24e-3 # arbitrary
clad_bot_gap_height = 0.31e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 10
ny_p = 10
nx_c = 10
ny_c = 30
ny_cu = 3
ny_cl = 3
pellet_quantity = 1
[]
# mesh options
partitioner = centroid
centroid_partitioner_direction = y
[]
[DefaultElementQuality]
failure_type = Warning
[]
[Variables]
[temp]
initial_condition = 300
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie_fuel]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = pellet
density_name = 15800
[]
[heat_ie_clad]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = clad
density_name = 7876
[]
[heat_source]
type = ADFissionRateHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[BCs]
[convection]
type = ConvectiveHeatFluxBC
variable = temp
boundary = clad_outside_right
T_infinity = coolant_temperature
heat_transfer_coefficient = coolant_channel_htc
[]
[]
[AuxVariables]
[cdf]
[]
[]
[AuxKernels]
[cdf_aux]
type = FunctionAux
variable = cdf
function = row_4_cdf
[]
[]
[Functions]
[dp16_power]
type = PiecewiseLinear
# min power, weighted avg, max power
x = '0 1'
y = '44734 44734'
[]
[row_4]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 3.442e-01
pellet_y_start = 2.24e-3
zero_beyond_top_and_bottom = true
[]
[row_4_cdf]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 3.442e-01
pellet_y_start = 2.24e-3
zero_beyond_top_and_bottom = true
cdf = true
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 'clad_inside_right'
secondary = 'pellet_outer_radial_surface'
quadrature = true
gap_conductivity = 61.0
min_gap = 3.556E-04
[]
[]
[FluidProperties]
[sodium_uo]
type = SodiumProperties
[]
[]
[Materials]
[coolant]
type = SodiumCoolantChannelMaterial
inlet_temperature_function = 648.0
rod_linear_power = dp16_power
inlet_massflux_function = 5262.0
axial_power_profile_cdf = row_4_cdf
pellet_height = 3.442e-01
cladding_radius = 2.921e-03
boundary = clad_outside_right
wire_wrap_diameter = 1.067e-03
temperature = temp
sodium_user_object = sodium_uo
htc_model = BGF
update_temperature = true
pin_location = interior
peclet_limit_behavior = error
outputs = all
[]
[fission_rate]
type = ADUPuZrFissionRate
rod_linear_power = dp16_power
axial_power_profile = row_4
pellet_radius = 2.184e-03
X_Zr = 0.225
block = pellet
outputs = all
[]
[metal_fuel_thermal]
type = ADUPuZrThermal
block = pellet
X_Zr = 0.225
X_Pu = 0
spheat_model = savage
thcond_model = lanl
porosity = 0
temperature = temp
[]
[clad_thermal]
type = ADHT9Thermal
block = clad
temperature = temp
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 1
dt = .1
[]
[Postprocessors]
[temp_fuel_avg]
type = ElementAverageValue
variable = temp
block = pellet
[]
[temp_fuel_max]
type = ElementExtremeValue
variable = temp
block = pellet
[]
[temp_clad_avg]
type = ElementAverageValue
variable = temp
block = clad
[]
[temp_clad_max]
type = ElementExtremeValue
variable = temp
block = clad
[]
[temp_oulet]
type = ElementExtremeValue
variable = coolant_temperature
[]
[]
[VectorPostprocessors]
[cladding]
type = SideValueSampler
boundary = clad_outside_right
sort_by = y
variable = 'temp coolant_temperature coolant_channel_htc'
[]
[centerline]
type = SideValueSampler
boundary = centerline
sort_by = y
variable = 'temp'
[]
[]
[Outputs]
[out]
type = CSV
execute_on = final
[]
[]
(assessment/LWR/validation/HbepR1/analysis/A184/HbepR1_A184.i)
initial_fuel_density = 10490
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
temperature = temp
volumetric_locking_correction = false
[]
# Specify coordinate system type
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
# Set problem dimension (2d-rz here) and import mesh file
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.95e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .0049695
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.68
ny_cl = 3
clad_top_gap_height = 0.24682
clad_gap_width = 1.005e-4
elem_type = QUAD8
[]
patch_size = 100 # 1000 lowering this and setting the strategy to auto will reduce the amount of memory required to run the job.
patch_update_strategy = iteration #auto
partitioner = centroid # this will help with run time
centroid_partitioner_direction = y # this will help with run time
[]
# Define dependent variables, element order and shape function family, and initial conditions
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 273 #K
[]
[]
# Define auxillary variables, element order and shape function family
[AuxVariables]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 5.148e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_history]
type = PiecewiseConstant
data_file = A184-power.csv
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = A184-axial-profile.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '-100 0 166323600 166327200' #
y = '0.014429 1 1 0.014429'
[]
[temp_ramp]
type = PiecewiseBilinear
data_file = A184-axial-tempprofile.csv
scale_factor = 1
axis = 1
[]
[]
# Specify that we need solid mechanics (divergence of stress)
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress hydrostatic_stress'
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz creep_strain_xx
creep_strain_xy creep_strain_yy vonmises_stress creep_strain_zz'
[]
[]
# Define kernels for the various terms in the PDE system
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 3 # fission rate applied to the fuel (block 2) only
fission_rate = fission_rate # coupling to the fission_rate aux variable
extra_vector_tags = 'ref'
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
factor = 1.68664e13 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = 1
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.68478
fuel_inner_radius = 0.0
fuel_outer_radius = .0049695 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0233 .9767 0 0 0 0'
RPF = RPF
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 1.1e-6
roughness_secondary = 3.5e-7
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
# Define boundary conditions
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 7.0e6 # Pa
function = pressure_ramp
[]
[]
[coolant_temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = temp_ramp
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 0.375e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
# Define material behavior models and input material property data
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
initial_porosity = 0.04
temperature = temp
burnup = burnup
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.00507
clad_outer_radius = 0.005865
use_coolant_channel = true
fast_neutron_flux = fast_neutron_flux
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 273
thermal_expansion_coeff = 10e-6
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
diameter = 0.00939 # fuel pellet diameter in meters
diametral_gap = 100.5e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = .047 # turn off relocation
relocation_activation1 = 5000
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_inelastic_stressUpdate]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = RECRYSTALLIZATION_ANNEALED
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = clad_inelastic_stressUpdate
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 273
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = RECRYSTALLIZATION_ANNEALED
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10490
total_densification = .0043
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[UserObjects]
[integral_burnup] # Added the computation of the average fuel rod burnup
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 166327200
dtmax = 1e6
dtmin = 0.1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
# Clad postprocessor (The rest are created with StandardLWRFuelRodOutputs)
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = true
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_ave_lin_pow'
output_limiting_function = power_history
sync_only = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/UFE067/UFE067.i)
################################################################################
#
# Description: Calvert Cliffs UFE067
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file UFE067_power.csv
# axial peaking factor file UFE067_axial_peaking.csv
# flux boundary condition file UFE067_fast_flux.csv
#
################################################################################
initial_fuel_density = 10396.59
[GlobalParams]
density = ${initial_fuel_density} #94.75 %TD Assume TD = 10972.65 kg/m3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.30013
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = UFE067_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = UFE067_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 141158832 141159192'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 141158832 141159192'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = UFE067_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx '
'strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy '
'creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0398 .9602 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 273
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 60
l_tol = 8e-3
nl_max_its = 80
nl_rel_tol = 1e-4
nl_abs_tol = 1e-7
start_time = -100
end_time = 141159192
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage '
'maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/TREAT/M7/analysis/binary_t427.i)
# TREAT M7 U-10Zr pin clad in HT9 transient only simulation.
# Not using transferred initial condition.
# ANL-IFR-124 Test M7 T-427
# Units: m, W, kg, Pa
[Debug]
show_var_residual = 'disp_x disp_y temperature'
show_var_residual_norms = true
[]
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.28451e-11
displacements = 'disp_x disp_y'
stress_free_temperature = 586.0
temperature = temperature
# Some calculated values, which are nice to know.
# u_weight = 0.90126
# pu_weight = 0.00115
# zr_weight = 0.0976
# X_U = 0.779
X_Pu = 0.000969
X_Zr = 0.22
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_bot_gap_height = 0.38e-3
clad_gap_width = 1e-6
clad_thickness = 0.38e-3
clad_top_gap_height = 252.35e-3
pellet_height = 37.3e-2
pellet_outer_radius = 2.54e-3
pellet_quantity = 1
bottom_clad_height = 1.9e-3
top_clad_height = 1.9e-3
elem_type = QUAD8
clad_mesh_density = customize
pellet_mesh_density = customize
nx_c = 3
nx_p = 5
ny_c = 150
ny_cl = 3
ny_cu = 3
ny_p = 175
[]
patch_size = 25
partitioner = centroid
patch_update_strategy = auto
centroid_partitioner_direction = y
[]
[Functions]
[power_history] # Peak power density
type = PiecewiseLinear
data_file = 'm7fa_digitized.csv'
format = columns
scale_factor = 78.8 # g; grams of fuel in pellet for W/g to W
[]
[axial_peaking_factors] # Peak factor (1 max)
type = PiecewiseBilinear
data_file = 'm7_axial_tranAlone.csv'
axis = 1
[]
[q_heat]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
scale_factor = 132273.8097 # m^-3; volume of fuel slug, 1/V, to make power density
[]
[dt_fun]
type = PiecewiseLinear
x = '0 6 7 9 15 20 25'
y = '0.5 0.5 0.01 0.01 0.01 0.001 0.1'
[]
[]
[Variables]
[temperature]
initial_condition = 586.0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
[slug_mech]
block = pellet
additional_generate_output = 'creep_strain_xx creep_strain_yy creep_strain_zz'
eigenstrain_names = 'slug_thermal_strain'
extra_vector_tags = 'ref'
[]
[clad_mech]
block = clad
additional_generate_output = 'creep_strain_xx creep_strain_yy creep_strain_zz'
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = ConstitutiveHeatConduction
extra_vector_tags = 'ref'
variable = temperature
thermal_conductivity = 'thermal_conductivity'
thermal_conductivity_args = 'temperature'
thermal_conductivity_derivs = 'thermal_conductivity_dT'
[]
[heat_ie]
type = ConstitutiveHeatConductionTimeDerivative
extra_vector_tags = 'ref'
variable = temperature
specific_heat = 'specific_heat'
specific_heat_args = 'temperature'
specific_heat_derivs = 'specific_heat_dT'
[]
[vol_heat_source]
type = HeatSource
extra_vector_tags = 'ref'
block = pellet
function = q_heat
variable = temperature
[]
[]
[AuxVariables]
[power_density]
block = pellet
[]
[fission_rate]
block = pellet
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
# Aux variables for output
[energy_density]
block = pellet
initial_condition = 0.0
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[coolant_temperature]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[eutectic_thickness_in]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[eutectic_thickness_out]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[]
[AuxKernels]
[calc_fission_rate]
type = FissionRateGeneral
fission_rate_formulation = POWER_DENSITY
block = pellet
power_density_function = q_heat
variable = fission_rate
execute_on = 'initial timestep_end'
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
factor = 0.6e19
execute_on = 'initial timestep_end'
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = 'initial timestep_end'
[]
[calc_power_density]
type = FunctionAux
block = pellet
function = q_heat
variable = power_density
execute_on = 'initial timestep_end'
[]
[calc_energy_density]
type = VariableTimeIntegrationAux
block = pellet
order = 2
variable_to_integrate = power_density
variable = energy_density
execute_on = timestep_end
[]
# Hoop stress_zz.
[creep_rate_aux]
type = MaterialRealAux
property = creep_rate
variable = creep_rate_aux
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_temperature]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temperature
boundary = 2
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[cdf_amount]
block = clad
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
type = MaterialRealAux
property = failed
variable = element_failed
[]
[fcci_eutectic_in]
execute_on = timestep_end
type = EutecticThicknessFCCI
boundary = 5
variable = eutectic_thickness_in
[]
[fcci_eutectic_out]
execute_on = timestep_end
type = EutecticThicknessFCCI
boundary = 2
variable = eutectic_thickness_out
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
outputs = all
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temperature
outputs = all
block = clad
[]
[avg_fuel_temp]
type = ElementAverageValue
variable = temperature
outputs = all
block = pellet
[]
[max_outer_clad_temp]
type = NodalExtremeValue
variable = temperature
value_type = max
boundary = 2
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temperature
value_type = max
block = clad
outputs = all
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temperature
value_type = max
block = pellet
outputs = all
[]
[peak_outer_fuel_temp]
type = NodalExtremeValue
variable = temperature
value_type = max
boundary = 10
[]
[peak_coolant_temperature]
type = ElementExtremeValue
variable = coolant_temperature
value_type = max
block = clad
outputs = all
[]
[max_power_density]
type = ElementExtremeValue
variable = power_density
value_type = max
block = pellet
[]
[avg_power_density]
type = ElementAverageValue
variable = power_density
block = pellet
outputs = all
[]
[total_deposit_pin_energy]
type = ElementIntegralVariablePostprocessor
variable = energy_density
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
outputs = all
addition = -2.0e-6 # m3; assuming all bond sodium displaced by closed gap
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
outputs = all
[]
[max_eutectic_pen_in]
type = ElementExtremeValue
variable = eutectic_thickness_in
block = clad
value_type = max
execute_on = timestep_end
outputs = all
[]
[max_eutectic_pen_out]
type = ElementExtremeValue
variable = eutectic_thickness_out
block = clad
value_type = max
execute_on = timestep_end
outputs = all
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temperature
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 73.70
min_gap = 1e-3
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = PenaltyDirichletBC
penalty = 1e10
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 455054.0
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.41343e6
initial_temperature = 309.0
startup_time = 0.0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
output_initial_moles = plenum_moles
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 586.0
inlet_pressure = 455054.0
inlet_massflux = 4520.72
coolant_material = sodium
flow_area = 2.22e-5
hydraulic_diameter = 2.057e-3
heated_perimeter = 1.835e-2
heated_diameter = 4.84e-3
number_axial_zone = 50
htc_correlation_type = 3
compute_enthalpy = true
[]
[]
[Materials]
# Fuel Slug Properties
[set_porosity]
type = GenericConstantMaterial
block = pellet
prop_names = porosity
prop_values = 0.31
[]
[set_mat_fission_rate]
type = ParsedMaterial
block = pellet
coupled_variables = 'fission_rate'
expression = 'fission_rate * 1.0'
property_name = 'fission_rate'
[]
[melted]
type = GenericMaterialFailure
block = pellet
compared = greater_than
variable_check = temperature
constant_criteria = 1600.0
[]
[for_youngs]
# Pulled equation from Bison manual and added temperature limit.
type = ParsedMaterial
block = pellet
outputs = all
output_properties = 'youngs_modulus'
property_name = 'youngs_modulus'
coupled_variables = 'temperature'
material_property_names = 'porosity'
constant_names = 'T_limit E_U T_meltU W_Zr W_Pu B_E Ta_start Ta_end'
constant_expressions = '1550.0 1.6e11 1405.0 0.0976 0.00115 1.2 923.0 973.0'
expression = 'E_p := 1.0 - B_E * porosity; E_W := (1.0 + 0.17 * W_Zr) / (1.0 + 1.34 * W_Zr) - W_Pu; T_act := if(temperature > T_limit, T_limit, temperature); x_smooth := (T_act - Ta_start) / (Ta_end - Ta_start); f_smooth := if(T_act < Ta_start, 0.0, if(T_act > Ta_end, 1.0, 6.0 * pow(x_smooth, 5) - 15.0 * pow(x_smooth, 4) + 10.0 * pow(x_smooth, 3))); E_T := 1.0 - 1.06 * (T_act - 588.0) / T_meltU - f_smooth * 0.3 * (1.0 - 1.06 * (Ta_end - 588.0) / T_meltU); E_U * E_T * E_p * E_W'
[]
[for_poissons]
# Pulled equation from Bison manual and added temperature limit.
type = ParsedMaterial
block = pellet
outputs = all
output_properties = 'poissons_ratio'
property_name = 'poissons_ratio'
coupled_variables = 'temperature'
material_property_names = 'porosity'
constant_names = 'T_limit nu_U T_meltU W_Zr B_nu'
constant_expressions = '1550.0 0.24 1405.0 0.0976 0.8'
expression = 'nu_p := 1.0 - B_nu * porosity; nu_W := (1.0 + 3.4 * W_Zr) / (1.0 + 1.9 * W_Zr); T_act := if(temperature > T_limit, T_limit, temperature); nu_T := 1.0 + 1.2 * (T_act - 588.0) / T_meltU; nu_U *nu_p * nu_W * nu_T'
[]
[slug_elasticity_tensor]
type = ComputeVariableIsotropicElasticityTensor
block = pellet
args = temperature
youngs_modulus = youngs_modulus
poissons_ratio = poissons_ratio
[]
[slug_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'slug_creep'
block = pellet
[]
[slug_creep]
type = UPuZrCreepUpdate
block = pellet
porosity = porosity
max_inelastic_increment = 1e-3
[]
[slug_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
eigenstrain_name = slug_thermal_strain
[]
[slug_thermal]
type = UPuZrThermal
block = pellet
Na_depth = 0.0673
fuel_outer_radius = 2.54e-3
spheat_model = savage
thcond_model = billone
porosity_model = partially_logged
initiating_porosity = 0.24
outputs = all
output_properties = thermal_conductivity
porosity = porosity
[]
[slug_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 15700.0
[]
[slug_fission_gas_release]
block = pellet
type = UPuZrFissionGasRelease
fission_rate = fission_rate
[]
# Cladding Properties
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = nonlinear
inelastic_models = 'clad_creep'
[]
[clad_fast_flux]
type = FastNeutronFlux
block = clad
factor = 0.6e19
[]
[clad_creep]
type = HT9CreepUpdate
block = clad
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[failclad]
block = clad
type = HT9FailureClad
hoop_stress = stress_zz
method = cdf_short
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew -snes_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
[]
[]
[Executioner]
type = Transient
automatic_scaling = true
compute_scaling_once = true
line_search = 'none'
l_max_its = 100
l_tol = 1e-3
nl_max_its = 200
nl_rel_tol = 1e-6
nl_abs_tol = 1e-9
start_time = 0.0
end_time = 25.0
dtmin = 0.0001
dtmax = 1.0
[TimeStepper]
type = FunctionDT
function = dt_fun
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
csv = true # Figures comparing to experiment results are based off this csv output.
[console]
type = Console
output_linear = true
output_nonlinear = true
[]
[check]
# Numerical assessment test check at points near important features.
# Checking near the feature but not during it hopefully will not affect the feature computation.
type = CSV
execute_on = TIMESTEP_END
sync_only = true
sync_times = '10 16.5 20'
[]
[]
(test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_with_liner.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
liner_thickness = 1e-4
nx_liner = 2
clad_mesh_density = customize
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[pellet_centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
exodus = true
[]
(test/tests/metallic_fuel_cladding_degradation/test_id.i)
# This is to test the calculation of cladding degradation factor function based on a vectorpostprocessor
[Problem]
solve = false
[]
[Mesh]
coord_type = RZ
[gen]
type = FuelPinMeshGenerator
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_bot_gap_height = 0.31e-3
clad_thickness = 3.81e-4
clad_gap_width = 0.19e-4
pellet_outer_radius = 4.00e-3
pellet_height = 0.05
pellet_quantity = 1
clad_top_gap_height = 0.05
include_fuel = false
clad_mesh_density = customize
nx_c = 25
ny_c = 100
ny_cu = 5
ny_cl = 5
[]
[]
[Functions]
[id_degradation]
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = id_wastage
argument_column = y
value_column = wastage_thickness
cladding_start = 2.24e-3
cladding_end = 102.55e-3
cladding_thickness = 3.81e-4
cladding_outer_radius = 4.4e-3
[]
[]
[AuxVariables]
[func_val]
[]
[]
[AuxKernels]
[func_val]
type = FunctionAux
function = id_degradation
variable = func_val
[]
[]
[Executioner]
type = Transient
num_steps = 5
dt = 1.0
[]
[VectorPostprocessors]
[id_wastage]
type = CSVReaderVectorPostprocessor
csv_file = id_wast.csv
force_preic = true
[]
[]
[Outputs]
exodus = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_A/x441_grp_A.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/nitride/EBRII/K4/analysis/base.i)
density = 13630.0
A_U = 0.238
A_Pu = 0.239
A_N = 0.014
X_Pu = 0.1
X_N = 0.5
avo = 6.0221408e23
M_avg = '${fparse X_N * A_N + X_Pu * A_Pu + (1.0 - X_N - X_Pu) * A_U}'
atoms = '${fparse density / M_avg * (1.0 - X_N) * avo}'
[GlobalParams]
density = ${density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
use_displaced_mesh = false
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.51e-3
pellet_outer_radius = 3.1e-3
pellet_height = 343e-3
clad_top_gap_height = 43.5e-3
clad_gap_width = 0.325e-3
bottom_clad_height = 8e-3
top_clad_height = 8e-3
clad_bot_gap_height = 0.2e-3 # unknown
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = 3
ny_cl = 3
pellet_quantity = 1
elem_type = QUAD8
[]
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 350
[]
[]
[AuxVariables]
[pellet_wall_temp]
order = CONSTANT
family = MONOMIAL
[]
[radial_heat_flux]
order = CONSTANT
family = MONOMIAL
[]
[clad_inner_wall_temp]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 35e6 35100000' # unknown, final burnup was 9.6 %
y = '0 1 1 0'
[]
[axial_peaking_factors]
type = PiecewiseLinear
axis = y
x = '0 46e-3 111e-3 200e-3 248e-3 313e-3 352e-3'
y = '73e3 73e3 82e3 85e3 82e3 74e3 74e3'
[]
[fission_func]
type = ParsedFunction
symbol_names = 'axial_peaking_factors power_history'
symbol_values = 'axial_peaking_factors power_history'
expression = 'linear_heating_rate := axial_peaking_factors * power_history;
pellet_cross_sectional_area := 3.14159 * pow( 3.1e-3, 2 );
volumetric_power := linear_heating_rate / pellet_cross_sectional_area;
energy_per_fission := 3.2e-11;
volumetric_power / energy_per_fission'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 35100000'
y = '0.151e6 0.151e6' # unknown, Na coolant
[]
[coolant_inlet_temp]
type = PiecewiseLinear
x = '0 1e5 35e6 35100000'
y = '350 644 644 350'
[]
[coolant_outlet_temp]
type = PiecewiseLinear
x = '0 1e5 35e6 35100000'
y = '350 746 746 350'
[]
[coolant_wall_temp]
type = ParsedFunction
symbol_values = 'coolant_inlet_temp coolant_outlet_temp'
symbol_names = 'coolant_inlet_temp coolant_outlet_temp'
expression = 'rod_length := 343e-3 + 43.5e-3 + 2 * 8e-3;
delta_temp := coolant_outlet_temp - coolant_inlet_temp;
interpolated_temp := coolant_inlet_temp + y * delta_temp / rod_length;
max( min( interpolated_temp, coolant_outlet_temp ), coolant_inlet_temp )'
[]
[radial_heat_flux]
type = ParsedFunction
symbol_values = 'coolant_wall_temp power_history axial_peaking_factors'
symbol_names = 'coolant_wall_temp power_history axial_peaking_factors'
expression = 'linear_heating_rate := axial_peaking_factors * power_history;
pellet_radius := 3.1e-3;
pellet_circumference := 3.14159 * pellet_radius * 2;
linear_heating_rate / pellet_circumference'
[]
[clad_inner_wall_temp]
type = ParsedFunction
symbol_values = 'radial_heat_flux coolant_wall_temp'
symbol_names = 'radial_heat_flux coolant_wall_temp'
expression = 'conductivity_316ss := 22;
clad_thickness := 0.51e-3;
coolant_wall_temp + radial_heat_flux / conductivity_316ss * clad_thickness'
[]
[pellet_wall_temp]
type = ParsedFunction
symbol_values = 'radial_heat_flux coolant_wall_temp clad_inner_wall_temp'
symbol_names = 'radial_heat_flux coolant_wall_temp clad_inner_wall_temp'
expression = 'conductivity_gap := 100;
gap_thickness := 0.325e-3;
clad_inner_wall_temp + radial_heat_flux / conductivity_gap * gap_thickness'
[]
[plenum_pressure]
type = ConstantFunction
value = 12.4e6 # initial fill
[]
[porosity_ramp]
type = PiecewiseLinear
x = '0 1e5 35e6 35100000'
y = '0.03 0.03 0.05 0.05' # Pellets start at 96.8% TD, but no data on final porosity.
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet
strain = SMALL
incremental = true
extra_vector_tags = 'ref'
eigenstrain_names = 'fuel_thermal_expansion fuel_swelling'
use_automatic_differentiation = true
[]
[clad]
block = clad
strain = SMALL
incremental = true
extra_vector_tags = 'ref'
use_automatic_differentiation = true
[]
[]
[Kernels]
[gravity]
type = ADGravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = ADHeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = ADFissionRateHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[pellet_wall_temp]
type = FunctionAux
variable = pellet_wall_temp
function = pellet_wall_temp
[]
[radial_heat_flux]
type = FunctionAux
variable = radial_heat_flux
function = radial_heat_flux
[]
[clad_inner_wall_temp]
type = FunctionAux
variable = clad_inner_wall_temp
function = clad_inner_wall_temp
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[plenumPressure]
boundary = 9
function = plenum_pressure
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = '1 2 3'
function = coolant_wall_temp
variable = temp
[]
[pellet_to_clad_cooling]
type = FunctionDirichletBC
boundary = 10
function = pellet_wall_temp
variable = temp
[]
[]
[Materials]
[fission]
type = ADGenericFunctionMaterial
prop_names = fission_rate
prop_values = fission_func
outputs = all
[]
[fuel_thermal]
block = pellet
type = ADMNThermal
temperature = temp
porosity = porosity
outputs = all
[]
[fuel_porosity]
block = pellet
type = ADGenericFunctionMaterial
prop_names = porosity
prop_values = porosity_ramp
outputs = all
[]
[fuel_elasticity_tensor]
block = pellet
type = ADMNElasticityTensor
temperature = temp
porosity = porosity
output_properties = 'youngs_modulus poissons_ratio'
outputs = all
[]
[fuel_thermal_expansion]
block = pellet
type = ADMNThermalExpansionEigenstrain
eigenstrain_name = fuel_thermal_expansion
stress_free_temperature = 350
temperature = temp
[]
[fuel_creep]
block = pellet
type = ADMNCreepUpdate
temperature = temp
porosity = porosity
fission_rate = fission_rate
outputs = all
[]
[burnup]
type = ADBurnup
block = pellet
atoms_heavy_metal_per_volume = ${atoms}
outputs = all
[]
[fuel_swelling]
block = pellet
type = ADMNVolumetricSwellingEigenstrain
eigenstrain_name = fuel_swelling
temperature = temp
initial_porosity = 0.03
burnup = burnup
outputs = all
[]
[fuel_radial_return_stress]
block = pellet
type = ADComputeMultipleInelasticStress
inelastic_models = 'fuel_creep'
[]
[fuel_density]
block = pellet
type = ADStrainAdjustedDensity
strain_free_density = ${density}
[]
[clad_elasticity_tensor]
block = clad
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 190e9
poissons_ratio = 0.265
[]
[clad_stress]
block = clad
type = ADComputeLinearElasticStress
[]
[clad_thermal]
block = clad
type = ADSS316Thermal
temperature = temp
[]
[clad_density]
block = clad
type = ADStrainAdjustedDensity
strain_free_density = 8000
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 35100000
dtmin = 1
dtmax = 2e6
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
time_t = ' 0 1e5 35e6 35100000'
time_dt = '1e2 1e2 1e2 1e2'
optimal_iterations = 10
growth_factor = 2
cutback_factor = 0.5
iteration_window = 1
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[peak_burnup]
type = ElementExtremeValue
block = pellet
value_type = max
variable = burnup
[]
[_dt]
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics
[]
[Outputs]
color = true
exodus = true
perf_graph = true
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[out]
type = CSV
show = 'peak_burnup'
[]
[performance_metrics]
type = CSV
show = 'peak_burnup num_lin_it num_nonlin_it alive_time'
[]
[]
(assessment/nitride/MTR/SNAP50/analysis/SNAP50_Pin_base_action.i)
[GlobalParams]
order = FIRST
energy_per_fission = ${energy_per_fission}
displacements = 'disp_x disp_y'
value_range_behavior = IGNORE
temperature = temperature
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
converge_on = 'disp_x disp_y temperature'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${cladding_liner_thickness}
pellet_outer_radius = ${fuel_radius}
pellet_height = ${fuel_height}
clad_top_gap_height = ${plenum_height}
clad_gap_width = ${cladding_gap_width}
bottom_clad_height = ${cladding_bottom_top_plug_length}
top_clad_height = ${cladding_bottom_top_plug_length}
clad_bot_gap_height = ${gap_bottom_length}
liner_thickness = ${liner_thickness}
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = 3
ny_cl = 3
nx_liner = 2
pellet_quantity = 1
elem_type = QUAD4
[]
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 ${time_end_ramp_up} ${time_start_ramp_down} ${time_end_ramp_down}'
y = '0 ${avg_lin_power} ${avg_lin_power} 0'
[]
[coolant_wall_temperature]
type = ParsedFunction
expression = 'if(t<${time_end_ramp_up}, ${initial_temperature} + t*(${a}*y^2 + ${b}*y + ${c} - ${initial_temperature})/(${time_end_ramp_up}),if(t<${time_start_ramp_down},${a}*y^2 + ${b}*y + ${c}, if(t<${time_end_ramp_down}, ${a}*y^2 + ${b}*y + ${c} + (t-${time_start_ramp_down})*(${initial_temperature}-(${a}*y^2 + ${b}*y + ${c}))/(${time_end_ramp_down}-${time_start_ramp_down}),${initial_temperature}))) '
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 ${run_time}'
y = '${coolant_pressure} ${coolant_pressure}' # unknown, Li coolant
[]
[plenum_pressure]
type = ConstantFunction
value = ${initial_plenum_pressure}
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
block = 'pellet liner clad'
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5' # clad_inside_right
secondary_boundary = '10' # pellet_outer_radial_surface
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = 5 # clad_inside_right
secondary = 10 # pellet_outer_radial_surface
c_normal = 1e+11
correct_edge_dropping = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12' # centerline
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = '1' # clad_outside_bottom
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = '20' # bottom_of_bottom_pellet
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3' # clad_outside_bottom, clad_outside_right, clad_outside_top
function = coolant_press_ramp
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9 # inside_surfaces
initial_pressure = ${initial_plenum_pressure}
startup_time = 0
R = ${R}
initial_temperature = ${initial_temperature}
temperature = ave_temperature_interior # coupling to post processor to get gas temperature approximation
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
volume = gas_volume # coupling to post processor to get gas volume
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[clad_outer_temperature]
type = FunctionDirichletBC
boundary = '1 2 3' # clad_outside_bottom, clad_outside_right, clad_outside_top
function = coolant_wall_temperature
variable = temperature
[]
[]
[NuclearMaterials]
initial_temperature = ${initial_temperature}
fission_operation = 'HighBurnup'
add_variables = true
physics = 'Mechanics Thermal'
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
decomposition_method = TaylorExpansion
volumetric_locking_correction = false
[UN]
[fuel]
block = pellet
strain = FINITE
density = ${density}
additional_generate_output = 'creep_strain_xx creep_strain_yy creep_strain_zz '
rod_linear_power = power_history
axial_power_profile = 1
pellet_radius = ${fuel_radius}
atoms_heavy_metal_per_volume = ${atoms_heavy_metal_per_volume}
automatic_eigenstrain_names = true
un_models = 'Burnup Elastic Creep ThermalExpansion'
properties_to_output = 'youngs_modulus poissons_ratio'
energy_deposited_in_fuel = 0.95
initial_porosity = ${initial_porosity}
stress_free_temperature = ${stress_free_temperature_MN}
[]
[]
[Tungsten]
[liner]
block = liner
strain = FINITE
incremental = true
automatic_eigenstrain_names = true
Tungsten_models = 'Elastic ThermalExpansion'
stress_free_temperature = ${stress_free_temperature_W}
[]
[]
[NbZr] # PWC11
[clad]
block = clad
strain = FINITE
incremental = true
automatic_eigenstrain_names = true
NbZr_models = 'Elastic ThermalExpansion'
stress_free_temperature = ${stress_free_temperature_NbZr}
[]
[]
[]
[Dampers]
[disp_x]
type = MaxIncrement
variable = disp_x
max_increment = 1e-4
min_damping = 1e-4
[]
[disp_y]
type = MaxIncrement
variable = disp_y
max_increment = 1e-3
min_damping = 1e-4
[]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
min_damping = 1e-4
[]
[]
[Executioner]
type = Transient
# With mortar contact
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-15'
snesmf_reuse_base = false
line_search = 'none'
l_max_its = 60
nl_max_its = 20
nl_rel_tol = 5e-6
nl_abs_tol = 5e-9
end_time = ${run_time}
dtmin = 1
dtmax = 5e4
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = time_step_limit
force_step_every_function_point = true
timestep_limiting_function = power_history
dt = 10
[]
[]
[Postprocessors]
# elemental temperatures
[temperature_fuel_avg]
type = ElementAverageValue
variable = temperature
block = pellet
execute_on = 'initial timestep_end'
[]
[temperature_fuel_max]
type = ElementExtremeValue
variable = temperature
block = pellet
[]
[temperature_fuel_min]
type = ElementExtremeValue
variable = temperature
block = pellet
value_type = min
[]
[temperature_clad_avg]
type = ElementAverageValue
variable = temperature
block = clad
execute_on = 'initial timestep_end'
[]
[temperature_clad_max]
type = ElementExtremeValue
variable = temperature
block = clad
[]
[temperature_clad_min]
type = ElementExtremeValue
variable = temperature
block = clad
value_type = min
[]
[temperature_liner_avg]
type = ElementAverageValue
variable = temperature
block = liner
execute_on = 'initial timestep_end'
[]
[temperature_liner_max]
type = ElementExtremeValue
variable = temperature
block = liner
[]
[temperature_liner_min]
type = ElementExtremeValue
variable = temperature
block = liner
value_type = min
[]
[ave_temperature_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = '9' # inside_surfaces
variable = temperature
execute_on = 'initial linear'
[]
[temperature_fuel_centerline_avg]
type = AxisymmetricCenterlineAverageValue
boundary = '12' # centerline
variable = temperature
[]
[temperature_fuel_centerline_max]
type = NodalExtremeValue
boundary = '12' # centerline
variable = temperature
[]
[temperature_fuel_centerline_min]
type = NodalExtremeValue
boundary = '12' # centerline
variable = temperature
value_type = min
[]
[temperature_fuel_surface_avg]
type = SideAverageValue
boundary = '10' # pellet_outer_radial_surface
variable = temperature
[]
[temperature_fuel_surface_max]
type = NodalExtremeValue
boundary = '10' # pellet_outer_radial_surface
variable = temperature
[]
[temperature_fuel_surface_min]
type = NodalExtremeValue
boundary = '10' # pellet_outer_radial_surface
variable = temperature
value_type = min
[]
# stresses
[stress_vonmises_fuel_avg]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[stress_vonmises_fuel_max]
type = ElementExtremeValue
variable = vonmises_stress
block = pellet
[]
[stress_vonmises_fuel_min]
type = ElementExtremeValue
variable = vonmises_stress
value_type = min
block = pellet
[]
[stress_hydro_fuel_avg]
type = ElementAverageValue
variable = hydrostatic_stress
block = pellet
[]
[stress_hydro_fuel_max]
type = ElementExtremeValue
variable = hydrostatic_stress
block = pellet
[]
[stress_hydro_fuel_min]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
# strain information
[strain_solid_swelling_fuel_avg]
type = ElementAverageValue
variable = solid_swelling
block = pellet
[]
[strain_volumetric_fuel_avg]
type = ElementAverageValue
variable = firstinv_strain
block = pellet
[]
[strain_axial_fuel_avg]
type = ParsedPostprocessor
pp_names = 'disp_y_fuel_top_surface_avg disp_y_fuel_bottom_surface_avg'
expression = '(disp_y_fuel_top_surface_avg - disp_y_fuel_bottom_surface_avg) / ${fuel_height}'
[]
[disp_y_fuel_top_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = '11' # top_of_top_pellet
[]
[disp_y_fuel_top_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = '11' # top_of_top_pellet
[]
[disp_y_fuel_bottom_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = '20' # bottom_of_bottom_pellet
[]
[disp_y_fuel_bottom_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = '20' # bottom_of_bottom_pellet
[]
[disp_x_fuel_radial_surface_max]
type = NodalExtremeValue
variable = disp_x
boundary = '10' # pellet_outer_radial_surface
[]
[disp_x_fuel_radial_surface_avg]
type = SideAverageValue
variable = disp_x
boundary = '10' # pellet_outer_radial_surface
[]
[burnup_avg]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[burnup_max]
type = ElementExtremeValue
block = pellet
variable = burnup
[]
[fission_rate_avg]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity_fuel_avg]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[porosity_fuel_max]
type = ElementExtremeValue
variable = porosity
block = pellet
[]
[porosity_fuel_min]
type = ElementExtremeValue
variable = porosity
value_type = min
block = pellet
[]
[swelling_dia_percent]
type = ParsedPostprocessor
pp_names = 'disp_x_fuel_radial_surface_avg'
expression = 'disp_x_fuel_radial_surface_avg / 3.14159 / ${fuel_radius} * 100'
[]
[fuel_volume]
type = VolumePostprocessor
block = pellet
execute_on = 'TIMESTEP_END INITIAL'
use_displaced_mesh = true
[]
[swelling_vol_percent]
type = ParsedPostprocessor
pp_names = 'fuel_volume'
expression = '(fuel_volume - ${fuel_volume}) / ${fuel_volume} * 100'
[]
[gas_volume]
type = InternalVolume
boundary = '9' # inside_surfaces
execute_on = 'initial linear'
[]
# extras
[actual_time_step_limit]
type = MaterialTimeStepPostprocessor
outputs = none
block = 'pellet'
[]
[time_step_limit]
type = ParsedPostprocessor
expression = 'if(actual_time_step_limit > 1e6, 1e6, actual_time_step_limit)'
pp_names = 'actual_time_step_limit'
[]
[]
[PerformanceMetricOutputs]
outputs = 'performance_metrics performance_metrics_sync exodus console base_out'
[]
[Outputs]
perf_graph = true
csv = true
sync_times = '1e2 1e3 5e3 1e4 5e4 1e5 5e5 1e6 2.5e6 5e6 1e7 2e7 3e7 ${fparse run_time -1e3} ${run_time}'
file_base = '${group_name}_nominal_Pin'
[base_out]
type = CSV
file_base = '${group_name}_Pin_base_action_out'
show = 'burnup_max temperature_fuel_avg temperature_clad_avg temperature_liner_avg ave_temperature_interior swelling_vol_percent disp_x_fuel_radial_surface_max'
sync_only = true
[]
[checkpoint]
type = Checkpoint
time_step_interval = 10
[]
[exodus]
type = Exodus
[]
[sync]
type = CSV
file_base = '${group_name}_nominal_Pin_sync'
sync_only = true
[]
[console]
type = Console
show = 'time_step_size temperature_fuel_avg temperature_fuel_centerline_max stress_vonmises_fuel_max stress_hydro_fuel_max stress_hydro_fuel_min strain_axial_fuel_avg burnup_avg fission_rate_avg porosity_fuel_avg time_step_limit disp_x_fuel_radial_surface_max disp_x_fuel_radial_surface_avg swelling_dia_percent swelling_vol_percent fuel_volume'
[]
[performance_metrics]
type = CSV
file_base = '${group_name}_nominal_performance_metrics_Pin'
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[performance_metrics_sync]
type = CSV
sync_only = true
file_base = '${group_name}_nominal_performance_metrics_Pin_sync'
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temperature'
show_var_residual_norms = true
[]
(assessment/LWR/validation/RIA_CABRI_REP_Na/analysis/REP_Na_RIA.i)
# REP RIA Base input
clad_block_name = 1
fuel_block_name = 3
# GlobalParams parameters
displacements_option = 'disp_x disp_y'
# Mesh parameters
nx_p = 11
ny_cu = 3
ny_cl = 3
nx_c = 4
clad_bot_gap_height = 0.003 # m
bottom_clad_height = 0.0015 # m
top_clad_height = 0.0015 # m
patch_size = 40
# Cladding geometry
clad_inner_radius = 0.0041178 # m
clad_outer_radius = 0.0047549 # m
# Contact
contact_penalty = 1e10 # (-)
normalize_contact_penalty_option = false
normal_smoothing_distance = 0.1 # m
# Relocation
burnup_relocation_stop = 0.0 # FIMA
# BC boundary names
coolantPressure_boundary = '1 2 3'
convective_clad_surface_boundary = '1 2 3'
PP_temperature = plenum_temperature
PP_volume = plenum_volume
# Coolant channel parameters
inlet_massflux = 3533 # kg/m^2-sec Based on flow rate provided and flow area and estimated density of 885.1 kg/m^3
flow_area = 8.74855e-5 # m^2
heated_diameter = 1.172526e-2 # m
hydraulic_diameter = 4.7e-3 # m
heated_perimeter = 2.984513e-2 # m
coolant_material = 'sodium'
heat_transfer_mode = 0
CC_number_axial_zone = 50
rod_pitch = 1.26e-2 # m
rod_diameter = 0.0095 # m
# Eigenstrain names
fuel_volumetric_swelling_eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
fuel_thermal_expansion_eigenstrain_name = 'fuel_thermal_eigenstrain'
fuel_relocation_eigenstrain_name = 'fuel_relocation_eigenstrain'
clad_irradiation_swelling_eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
clad_thermal_expansion_eigenstrain_name = 'clad_thermal_eigenstrain'
# Materials parameters
fuel_elasticity_tensor_type = UO2ElasticityTensor
gbs_model_option = false
grain_radius_const = 5.0e-6 # m
clad_inelastic_models_type = 'clad_zryplasticity' #only use plasticity
cold_work_factor = 0.5 # (-)
oxygen_concentration2 = 0.0
# Numerical options
damper_max_temperature_value = 3200 # K
damper_min_temperature_value = 200 # K
nl_abs_tol = 1e-10
dtmax = 10 # s
TimeStepper_dt = 10 # s
TimeStepper_optimal_iterations = 20
TimeStepper_max_function_change = 1e5
# Postprocessor parameters
fis_gas_grain_type = ElementIntegralFisGasGrainSifgrs
fis_gas_boundary_type = ElementIntegralFisGasBoundarySifgrs
# Outputs options
color_option = true
chkfile_show = 'plenum_temperature fission_gas_released_percentage average_centerline_fuel_temperature average_burnup peak_RAE'
[GlobalParams]
density = ${initial_fuel_density}
volumetric_locking_correction = false
[]
[Problem]
restart_file_base = '${id_recover}_recover_files_cp/LATEST'
[]
[Mesh]
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = ${nx_p}
ny_p = ${ny_p}
ny_cu = ${ny_cu}
ny_c = ${ny_c}
ny_cl = ${ny_cl}
nx_c = ${nx_c}
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_quantity = ${pellet_quantity}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_bot_gap_height = ${clad_bot_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${bottom_clad_height}
top_clad_height = ${top_clad_height}
elem_type = QUAD8
[]
patch_size = ${patch_size}
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[SED]
order = CONSTANT
family = MONOMIAL
block = ${clad_block_name}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = ${fuel_block_name}
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
[]
[clad]
block = ${clad_block_name}
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz plastic_strain_xx plastic_strain_yy plastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx
elastic_strain_yy elastic_strain_zz hoop_stress'
[]
[]
[AuxKernels]
[total_hoop_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = total_hoop_strain
scalar_type = HoopStress
execute_on = timestep_end
block = ${clad_block_name}
[]
[total_axial_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = total_axial_strain
scalar_type = AxialStress
execute_on = timestep_end
block = ${clad_block_name}
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
normal_smoothing_distance = ${normal_smoothing_distance}
[]
[]
[ThermalContact]
[thermal_contact]
normal_smoothing_distance = ${normal_smoothing_distance}
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
inlet_massflux = ${inlet_massflux}
flow_area = ${flow_area}
heated_diameter = ${heated_diameter}
hydraulic_diameter = ${hydraulic_diameter}
heated_perimeter = ${heated_perimeter}
heat_transfer_mode = ${heat_transfer_mode}
# oxide_thickness = oxide_thickness # coupled oxide_thickness
number_axial_zone = ${CC_number_axial_zone}
rod_pitch = ${rod_pitch}
rod_diameter = ${rod_diameter}
[]
[]
[Materials]
[fuel_volumetric_swelling]
include_solid_swelling = true
include_densification = true
[]
[fission_gas_release]
grain_radius_const = ${grain_radius_const}
transient_option = MICROCRACKING_BURNUP
[]
[clad_zrycreep]
zircaloy_material_type = stress_relief_annealed
[]
[clad_elasticity_tensor]
cold_work_factor = ${cold_work_factor}
oxygen_concentration = ${oxygen_concentration}
matpro_poissons_ratio = true
matpro_youngs_modulus = true
[]
[clad_zryplasticity]
oxygen_concentration = ${oxygen_concentration2}
[]
[strain_energy_density]
type = StrainEnergyDensity
incremental = true
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = ${damper_max_temperature_value}
min_value = ${damper_min_temperature_value}
variable = temperature
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Postprocessors]
[gap_cond]
type = ElementalVariableValue
variable = gap_cond
elementid = ${gap_cond_elementid}
use_displaced_mesh = 1
[]
[creep_hoop_strain]
type = ElementalVariableValue
variable = creep_strain_zz
elementid = ${creep_hoop_strain_elementid}
use_displaced_mesh = 1
[]
[elastic_hoop_strain]
type = ElementalVariableValue
variable = elastic_strain_zz
elementid = ${elastic_hoop_strain_elementid}
use_displaced_mesh = 1
[]
[plastic_hoop_strain]
type = ElementalVariableValue
variable = plastic_strain_zz
elementid = ${plastic_hoop_strain_elementid}
use_displaced_mesh = 1
[]
[total_hoop_strain]
type = ElementalVariableValue
variable = total_hoop_strain
elementid = ${total_hoop_strain_elementid}
use_displaced_mesh = 1
[]
[clad_hoop_stress]
type = ElementalVariableValue
variable = hoop_stress
elementid = ${clad_hoop_stress_elementid}
use_displaced_mesh = 1
[]
[clad_axial_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${clad_axial_elongation_nodeid}
use_displaced_mesh = 1
[]
[clad_oxide_thickness]
type = ElementalVariableValue
variable = oxide_thickness
elementid = ${clad_oxide_thickness_elementid}
use_displaced_mesh = 1
[]
[clad_coolant_htc]
type = ElementalVariableValue
variable = clad_coolant_htc
elementid = ${clad_coolant_htc_elementid}
use_displaced_mesh = 1
[]
[coolant_temperature]
type = ElementalVariableValue
variable = coolant_temperature
elementid = ${coolant_temperature_elementid}
use_displaced_mesh = 1
[]
[fuel_axial_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${fuel_axial_elongation_nodeid}
[]
[clad_radial_elongation]
type = NodalVariableValue
variable = disp_x
nodeid = ${clad_radial_elongation_nodeid}
[]
[fuel_radial_elongation]
type = NodalVariableValue
variable = disp_x
nodeid = ${fuel_radial_elongation_nodeid}
[]
[SED_PPN_O]
type = ElementalVariableValue
variable = SED
elementid = ${SED_PPN_O_elementid}
use_displaced_mesh = 1
[]
[SED_PPN_I]
type = ElementalVariableValue
variable = SED
elementid = ${SED_PPN_I_elementid}
use_displaced_mesh = 1
[]
[OFract_PPN_O]
type = ElementalVariableValue
variable = oxywtfract_total
elementid = ${OFract_PPN_O_elementid}
use_displaced_mesh = 1
[]
[OGain_PPN_O]
type = ElementalVariableValue
variable = oxywtfgain_total
elementid = ${OGain_PPN_O_elementid}
use_displaced_mesh = 1
[]
[max_clad_SED]
type = ElementExtremeValue
block = ${clad_block_name}
variable = SED
value_type = max
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temperature
radial_direction = x
axial_direction = y
axial_position = ${RAE_axial_position}
temperature_name = temperature
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temperature]
type = NodalValueSampler
block = ${fuel_block_name}
sort_by = y
variable = temperature
execute_on = timestep_end
outputs = 'outfile_radial_temperature'
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
[]
[Outputs]
[outfile_oxide_thickness]
type = CSV
file_base = '${id}_oxide_thickness_csv'
sync_times = ${outfile_oxide_thickness_sync_times}
sync_only = true
[]
[outfile_radial_temperature]
type = CSV
file_base = '${id}_radial_temperature_csv'
enable = false
[]
[exodus]
end_time = ${exodus_end_time}
[]
[exodus_RIA]
type = Exodus
file_base = '${id}_exodus_RIA'
time_step_interval = 2
start_time = ${RIA_start_time}
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_C/x441_grp_C.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/HbepR1/analysis/A364/HbepR1_A364.i)
initial_fuel_density = 10490
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
temperature = temp
volumetric_locking_correction = false
[]
# Specify coordinate system type
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
# Set problem dimension (2d-rz here) and import mesh file
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 8.0e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .0052195
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.68
ny_cl = 3
clad_top_gap_height = 0.2461
clad_gap_width = 1.055e-4
elem_type = QUAD8
[]
patch_size = 100 # 1000 lowering this and setting the strategy to auto will reduce the amount of memory required to run the job.
patch_update_strategy = auto
partitioner = centroid # this will help with run time
centroid_partitioner_direction = y # this will help with run time
[]
# Define dependent variables, element order and shape function family, and initial conditions
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 273 #K
[]
[]
# Define auxillary variables, element order and shape function family
[AuxVariables]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 5.148e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_history]
type = PiecewiseConstant
data_file = A364-power.csv
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = A364-axial-profile.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '-100 0 166323600 166327200' #
y = '0.014429 1 1 0.014429'
[]
[temp_ramp]
type = PiecewiseBilinear
data_file = A364-axial-tempprofile.csv
scale_factor = 1
axis = 1
[]
[]
# Specify that we need solid mechanics (divergence of stress)
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress'
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz creep_strain_xx
creep_strain_xy creep_strain_yy vonmises_stress creep_strain_zz'
[]
[]
# Define kernels for the various terms in the PDE system
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 3 # fission rate applied to the fuel (block 2) only
fission_rate = fission_rate # coupling to the fission_rate aux variable
extra_vector_tags = 'ref'
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
factor = 1.68056e13 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = 1
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.68478
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0052195 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0308 .9692 0 0 0 0'
RPF = RPF
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 1.1e-6
roughness_secondary = 0.35e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
# Define boundary conditions
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 7.0e6 # Pa
function = pressure_ramp
[]
[]
[coolant_temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = temp_ramp
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 0.375e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get inital fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
# Define material behavior models and input material property data
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
initial_porosity = 0.04
temperature = temp
burnup = burnup
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.005325
clad_outer_radius = 0.006125
use_coolant_channel = true
fast_neutron_flux = fast_neutron_flux
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 273
thermal_expansion_coeff = 10e-6
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
diameter = 0.010439 # fuel pellet diameter in meters
diametral_gap = 105.5e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = .049 # turn off relocation
relocation_activation1 = 5000
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_inelastic_stressUpdate]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = RECRYSTALLIZATION_ANNEALED
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = clad_inelastic_stressUpdate
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 273
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = RECRYSTALLIZATION_ANNEALED
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10490
total_densification = .0043
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[UserObjects]
[integral_burnup] # Added the computation of the average fuel rod burnup
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 166327200
dtmax = 1e6
dtmin = 0.1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
# Clad postprocessor (The rest are created with StandardLWRFuelRodOutputs)
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = true
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_ave_lin_pow'
output_limiting_function = power_history
sync_only = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(examples/metal_fuel/x441_coarse/x441_group_A_nominal.i)
initial_fuel_density = 15800
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.38e-03
pellet_outer_radius = 2.195e-03
pellet_height = 343.0e-3
clad_top_gap_height = 373.0e-3
clad_gap_width = 0.345e-3
bottom_clad_height = 7.9e-3
top_clad_height = 7.9e-3
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 3
ny_p = 40
nx_c = 2
ny_c = 40
ny_cu = 2
ny_cl = 2
pellet_quantity = 1
elem_type = QUAD4
[]
# mesh options
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = ParsedFunction
expression = 0.151e6
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 343.0e-3
pellet_y_start = 8.1e-3
[]
[engr_radial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_rad / 2.195e-03'
symbol_values = 'max_fuel_radial_disp'
symbol_names = 'fuel_disp_rad'
[]
[engr_axial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_axial / 343.0e-3'
symbol_values = 'max_fuel_elongation'
symbol_names = 'fuel_disp_axial'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx
strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain
solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx
strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_strain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_zz
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductance = 176811.6
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = 2.195e-03
X_Zr = 0.225
X_Pu_function = 0.163
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = 0.225
initial_X_Pu = 0.163
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = 0.225
X_Pu = 0.163
block = pellet
temperature = temp
[]
[fuel_inlastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-2
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 5e17
interconnection_initiating_porosity = 0.29
interconnection_terminating_porosity = 0.31
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = 0.225
X_Pu = 0.163
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
critical_porosity = 0.30
fractional_fgr_initial = 0.4
fractional_fgr_post = 0.8
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-5
nl_abs_tol = 1e-7
end_time = 1e7
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 6
optimal_iterations = 20
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = -1.53703e-6
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = creep_strain_zz
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_radial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_xx
[]
[max_fuel_axial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_yy
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_fuel_radial_disp]
type = NodalExtremeValue
variable = disp_x
boundary = 'all_pellet_exterior'
[]
[engr_strain_fuel_radial]
type = FunctionValuePostprocessor
function = engr_radial_strain_fuel
[]
[engr_strain_fuel_axial]
type = FunctionValuePostprocessor
function = engr_axial_strain_fuel
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
time_step_interval = 1
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_group_A_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/ad_metallic_fuel_coolant_wastage/cc_wastage_ht9_eff_full_pin.i)
# This test is to verify the calculation for HT9 Coolant Wastage in a simplified pin mesh (non-AD)
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
X_Zr = 0.225
X_Pu = 0.0
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.381e-03
pellet_outer_radius = 2.158e-03
pellet_height = 342.5e-3
clad_top_gap_height = 479.5e-3
clad_gap_width = 0.382e-03
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_bot_gap_height = 0.31e-3
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 1
ny_p = 1
nx_c = 1
ny_c = 20
ny_cu = 1
ny_cl = 1
pellet_quantity = 1
elem_type = QUAD4
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1E6 1E7'
y = '0 2E4 3E4'
[]
[pwr_axial_peaking_factors]
type = ConstantFunction
value = 1.0
[]
[pwr_cdf]
type = PiecewiseLinear
axis = y
x = '0 2.55e-3 342.5e-3'
y = '0 0 1'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie_f]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = pellet
density_name = 16000
[]
[heat_ie_c]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = clad
density_name = 7890
[]
[heat_source]
type = FissionRateHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = 1e-6
emissivity_primary = 0
emissivity_secondary = 0
[]
[]
[FluidProperties]
[sodium_uo]
type = SodiumProperties
[]
[]
[BCs]
[convection]
type = ConvectiveHeatFluxBC
variable = temp
boundary = 2
T_infinity = coolant_temperature
heat_transfer_coefficient = coolant_channel_htc
[]
[]
[Materials]
[coolant]
type = SodiumCoolantChannelMaterial
inlet_temperature_function = 648.0
rod_linear_power = power_history
inlet_massflux_function = 2300
axial_power_profile_cdf = pwr_cdf
pellet_height = 3.425e-01
cladding_radius = 2.921e-03
boundary = clad_outside_right
wire_wrap_diameter = 1.067e-03
temperature = temp
sodium_user_object = sodium_uo
htc_model = BGF
update_temperature = true
pin_location = interior
peclet_limit_behavior = error
outputs = all
[]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = pwr_axial_peaking_factors
pellet_radius = 2.158e-3
outputs = all
[]
[burnup]
type = UPuZrBurnup
density = 16000
outputs = all
[]
[cc_wastage_thickness]
type = MetallicFuelCoolantWastage
clad_material = HT9
use_effective_method = true
temperature = temp
boundary = 2
outputs = all
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
spheat_model = savage
thcond_model = lanl
porosity = 0
temperature = temp
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50
variable = temp
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 100
l_tol = 1e-3
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
end_time = 1E7
dt = 5E5
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[peak_clad_outer_temp]
type = NodalExtremeValue
variable = temp
value_type = max
boundary = 2
outputs = 'console'
[]
[time_max_clad_outer_temp]
type = TimeExtremeValue
postprocessor = peak_clad_outer_temp
outputs = 'console'
[]
[max_wastagethickness]
type = ElementExtremeValue
value_type = max
variable = cc_wastage_thickness
outputs = 'console'
[]
[]
[VectorPostprocessors]
[cc_wastage_profile]
type = SideValueSampler
boundary = 2
sort_by = y
variable = cc_wastage_thickness
[]
[]
[Outputs]
perf_graph = true
console = true
[csv_vec]
type = CSV
file_base = cc_wastage_ht9_eff_full_pin_profile
execute_on = final
[]
[]
(assessment/nitride/EBRII/K4/analysis/base_action.i)
density = 13630.0
A_U = 0.238
A_Pu = 0.239
A_N = 0.014
X_Pu = 0.1
X_N = 0.5
avo = 6.0221408e23
M_avg = '${fparse X_N * A_N + X_Pu * A_Pu + (1.0 - X_N - X_Pu) * A_U}'
atoms_heavy_metal_per_volume = '${fparse density / M_avg * (1.0 - X_N) * avo}'
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
temperature = temperature
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
use_displaced_mesh = false
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.51e-3
pellet_outer_radius = 3.1e-3
pellet_height = 343e-3
clad_top_gap_height = 43.5e-3
clad_gap_width = 0.325e-3
bottom_clad_height = 8e-3
top_clad_height = 8e-3
clad_bot_gap_height = 0.2e-3 # unknown
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = 3
ny_cl = 3
pellet_quantity = 1
elem_type = QUAD8
[]
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[AuxVariables]
[pellet_wall_temp]
order = CONSTANT
family = MONOMIAL
[]
[radial_heat_flux]
order = CONSTANT
family = MONOMIAL
[]
[clad_inner_wall_temp]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 35e6 35100000' # unknown, final burnup was 9.6 %
y = '0 1 1 0'
[]
[axial_peaking_factors]
type = PiecewiseLinear
axis = y
x = '0 46e-3 111e-3 200e-3 248e-3 313e-3 352e-3'
y = '73e3 73e3 82e3 85e3 82e3 74e3 74e3'
[]
[fission_func]
type = ParsedFunction
symbol_names = 'axial_peaking_factors power_history'
symbol_values = 'axial_peaking_factors power_history'
expression = 'linear_heating_rate := axial_peaking_factors * power_history;
pellet_cross_sectional_area := 3.14159 * pow( 3.1e-3, 2 );
volumetric_power := linear_heating_rate / pellet_cross_sectional_area;
energy_per_fission := 3.2e-11;
volumetric_power / energy_per_fission'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 35100000'
y = '0.151e6 0.151e6' # unknown, Na coolant
[]
[coolant_inlet_temp]
type = PiecewiseLinear
x = '0 1e5 35e6 35100000'
y = '350 644 644 350'
[]
[coolant_outlet_temp]
type = PiecewiseLinear
x = '0 1e5 35e6 35100000'
y = '350 746 746 350'
[]
[coolant_wall_temp]
type = ParsedFunction
symbol_values = 'coolant_inlet_temp coolant_outlet_temp'
symbol_names = 'coolant_inlet_temp coolant_outlet_temp'
expression = 'rod_length := 343e-3 + 43.5e-3 + 2 * 8e-3;
delta_temp := coolant_outlet_temp - coolant_inlet_temp;
interpolated_temp := coolant_inlet_temp + y * delta_temp / rod_length;
max( min( interpolated_temp, coolant_outlet_temp ), coolant_inlet_temp )'
[]
[radial_heat_flux]
type = ParsedFunction
symbol_values = 'coolant_wall_temp power_history axial_peaking_factors'
symbol_names = 'coolant_wall_temp power_history axial_peaking_factors'
expression = 'linear_heating_rate := axial_peaking_factors * power_history;
pellet_radius := 3.1e-3;
pellet_circumference := 3.14159 * pellet_radius * 2;
linear_heating_rate / pellet_circumference'
[]
[clad_inner_wall_temp]
type = ParsedFunction
symbol_values = 'radial_heat_flux coolant_wall_temp'
symbol_names = 'radial_heat_flux coolant_wall_temp'
expression = 'conductivity_316ss := 22;
clad_thickness := 0.51e-3;
coolant_wall_temp + radial_heat_flux / conductivity_316ss * clad_thickness'
[]
[pellet_wall_temp]
type = ParsedFunction
symbol_values = 'radial_heat_flux coolant_wall_temp clad_inner_wall_temp'
symbol_names = 'radial_heat_flux coolant_wall_temp clad_inner_wall_temp'
expression = 'conductivity_gap := 100;
gap_thickness := 0.325e-3;
clad_inner_wall_temp + radial_heat_flux / conductivity_gap * gap_thickness'
[]
[plenum_pressure]
type = ConstantFunction
value = 12.4e6 # initial fill
[]
[porosity_ramp]
type = PiecewiseLinear
x = '0 1e5 35e6 35100000'
y = '0.03 0.03 0.05 0.05' # Pellets start at 96.8% TD, but no data on final porosity.
[]
[]
[Kernels]
[gravity]
type = ADGravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[pellet_wall_temp]
type = FunctionAux
variable = pellet_wall_temp
function = pellet_wall_temp
[]
[radial_heat_flux]
type = FunctionAux
variable = radial_heat_flux
function = radial_heat_flux
[]
[clad_inner_wall_temp]
type = FunctionAux
variable = clad_inner_wall_temp
function = clad_inner_wall_temp
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[plenumPressure]
boundary = 9
function = plenum_pressure
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = '1 2 3'
function = coolant_wall_temp
variable = temperature
[]
[pellet_to_clad_cooling]
type = FunctionDirichletBC
boundary = 10
function = pellet_wall_temp
variable = temperature
[]
[]
[NuclearMaterials]
stress_free_temperature = 350
initial_temperature = 350
fission_operation = 'HighBurnup'
add_variables = true
physics = 'Mechanics Thermal'
extra_vector_tags = 'ref'
automatic_eigenstrain_names = true
use_automatic_differentiation = true
decomposition_method = TaylorExpansion
[UN]
[fuel]
block = pellet
density = ${density}
atoms_heavy_metal_per_volume = ${atoms_heavy_metal_per_volume}
fission_function = fission_func
incremental = true
strain = SMALL
un_models = 'Burnup Elastic Creep Swelling ThermalExpansion'
properties_to_output = 'youngs_modulus poissons_ratio'
initial_porosity = 0.03
porosity_function = porosity_ramp
stress_free_temperature = 350
[]
[]
[SS316]
[clad]
block = clad
incremental = true
strain = SMALL
ss316_models = 'Elastic'
[]
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 35100000
dtmin = 1
dtmax = 2e6
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
time_t = ' 0 1e5 35e6 35100000'
time_dt = '1e2 1e2 1e2 1e2'
optimal_iterations = 10
growth_factor = 2
cutback_factor = 0.5
iteration_window = 1
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[peak_burnup]
type = ElementExtremeValue
block = pellet
value_type = max
variable = burnup
[]
[_dt]
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics
[]
[Outputs]
color = true
exodus = true
perf_graph = true
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[out]
type = CSV
show = 'peak_burnup'
[]
[performance_metrics]
type = CSV
show = 'peak_burnup num_lin_it num_nonlin_it alive_time'
[]
[]
(test/tests/fast_neutron_flux_from_power/rods.i)
# This test checks the fast neutron flux calculated FastNeutronFluxFromPower for a series of rods, and
# ensures the correct values are calculated depending on a mix of flux, fluence, and dpa calculation
# options.
[Problem]
solve = false
[]
[Mesh]
coord_type = RZ
# rod specific parameters
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.381e-03
pellet_outer_radius = 2.197e-03
pellet_height = 344.3e-3
clad_top_gap_height = 2.979e-1
clad_gap_width = 0.348e-03
bottom_clad_height = 2.24e-3 # arbitrary
top_clad_height = 2.24e-3 # arbitrary
clad_bot_gap_height = 0.31e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 3
ny_p = 10
nx_c = 4
ny_c = 30
ny_cu = 3
ny_cl = 3
pellet_quantity = 1
[]
# mesh options
partitioner = centroid
centroid_partitioner_direction = y
[]
[DefaultElementQuality]
failure_type = Warning
[]
[Functions]
[dp11]
type = PiecewiseLinear
x = '0 10 20'
y = '0 23000 32000'
[]
[dp16]
type = PiecewiseLinear
x = '0 10 20'
y = '0 44000 48000'
[]
[dp81]
type = PiecewiseLinear
x = '0 10 20'
y = '0 29000 32000'
[]
[t179]
type = PiecewiseLinear
x = '0 10 20'
y = '0 40000 42000'
[]
[row_3]
type = PowerPeakingFunction
fit = EBRII_ROW_3
pellet_length = 343.0e-3
pellet_y_start = 2.55e-3
zero_beyond_top_and_bottom = false
[]
[row_4]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 343.0e-3
pellet_y_start = 2.55e-3
zero_beyond_top_and_bottom = false
[]
[]
[Materials]
[dp11]
type = FastNeutronFluxFromPower
axial_power_profile = row_3
rod_linear_power = dp11
initial_X_Pu = 0
initial_X_non_heavy_metal_atoms = 0.225
non_heavy_metal_atom = Zr
initial_density = 15800
pellet_radius = 2.192e-03
enrichment_U235 = 0.675
outputs = all
fast_neutron_flux_name = dp11_flux
[]
[dp16]
type = FastNeutronFluxFromPower
axial_power_profile = dp16
rod_linear_power = row_4
initial_X_Pu = 0.163
initial_X_non_heavy_metal_atoms = 0.225
non_heavy_metal_atom = Zr
initial_density = 15800
pellet_radius = 2.192e-03
enrichment_Pu240 = 0.109
enrichment_U235 = 0.697
outputs = all
fast_neutron_flux_name = dp16_flux
dpa_name = dp16_dpa
calculate_dpa = true
[]
[dp81]
type = FastNeutronFluxFromPower
axial_power_profile = dp81
rod_linear_power = row_3
initial_X_Pu = 0
initial_X_non_heavy_metal_atoms = 0.225
non_heavy_metal_atom = Zr
initial_density = 15800
pellet_radius = 2.192e-03
enrichment_U235 = 0.675310345
outputs = all
fast_neutron_flux_name = dp81_flux
fast_neutron_fluence_name = dp81_fluence
calculate_fluence = true
[]
[t179]
type = FastNeutronFluxFromPower
axial_power_profile = t179
rod_linear_power = row_4
initial_X_Pu = 0.163
initial_X_non_heavy_metal_atoms = 0.225
non_heavy_metal_atom = Zr
initial_density = 15800
pellet_radius = 2.192e-03
enrichment_Pu240 = 0.057
enrichment_U235 = 0.573
outputs = all
fast_neutron_flux_name = t179_flux
fast_neutron_fluence_name = t179_fluence
dpa_name = t179_dpa
calculate_dpa = true
calculate_fluence = true
[]
[]
[Executioner]
type = Transient
num_steps = 2
dt = 10
[]
[Postprocessors]
[dp11_flux_avg]
type = ElementAverageValue
variable = dp11_flux
[]
[dp16_flux_avg]
type = ElementAverageValue
variable = dp16_flux
[]
[dp81_flux_avg]
type = ElementAverageValue
variable = dp81_flux
[]
[t179_flux_avg]
type = ElementAverageValue
variable = t179_flux
[]
[dp16_dpa_avg]
type = ElementAverageValue
variable = dp16_dpa
[]
[dp81_fluence_avg]
type = ElementAverageValue
variable = dp81_fluence
[]
[t179_fluence_avg]
type = ElementAverageValue
variable = t179_fluence
[]
[t179_dpa_avg]
type = ElementAverageValue
variable = t179_dpa
[]
[]
[VectorPostprocessors]
[cladding_flux]
type = LineMaterialRealSampler
property = 'dp11_flux dp16_flux dp81_flux t179_flux'
start = '0.0027 0 0'
end = '0.0027 0.6469 0'
sort_by = y
[]
[]
[Outputs]
csv = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/x441_base.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress effective_creep_strain volumetric_strain'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain
solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress effective_creep_strain hoop_creep_strain
hoop_elastic_strain hoop_strain'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/base_input/Hardy_Tube_Test.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[gen]
type = FuelPinMeshGenerator
include_fuel = false
include_clad = true
pellet_outer_radius = 0.0072527
clad_gap_width = 0.0
clad_top_gap_height = 0.0
clad_bot_gap_height = 0.0
clad_thickness = 0.38e-3
pellet_height = 0.5
pellet_quantity = 1
clad_mesh_density = customize
nx_c = 2
ny_c = 50
elem_type = QUAD8
[]
[]
[Variables]
[temperature]
initial_condition = 600.0
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 40'
y = '1 1'
[]
[temp_function]
type = PiecewiseLinear
y = '600 1600'
[]
[temperature_profile]
type = PiecewiseBilinear
y = '0 40'
x = '0 0.25224 0.50448'
z = '0.995 1.01 0.995 0.995 1.01 0.995'
axis = 1
[]
[inner_temperature]
type = CompositeFunction
functions = 'temp_function temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
factor = 0.0
function = pressure_function
[]
[inner_surface]
boundary = 'clad_inside_right clad_inside_bottom clad_inside_top'
function = pressure_function
[]
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 1001
value = 0.0
[]
[x_fix]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
function = inner_temperature
variable = temperature
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[Materials]
[clad_thermal]
type = ZryThermal
block = clad
zry_thermal_properties_model = MATPRO
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = true
matpro_poissons_ratio = true
temperature = temperature
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = true
model_thermal_creep = true
temperature_loca_creep_begin = 840 # values from the report
temperature_standard_thermal_creep_end = 975
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 600.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-5
nl_abs_tol = 1.0e-8
start_time = 0
n_startup_steps = 1
end_time = 40
dtmax = 1
dtmin = 0.0000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 1.0
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = all_clad_interior
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = total_hoop_strain
[]
[max_disp_x]
type = NodalExtremeValue
block = clad
value_type = max
variable = disp_x
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[csv]
type = CSV
[]
[chkfile]
type = CSV
show = 'max_disp_x max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/2pt1MPa/100C_sec/100C_sec_Hardy_Tube_Test_2pt1MPa.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[gen]
type = FuelPinMeshGenerator
include_fuel = false
include_clad = true
pellet_outer_radius = 0.0072527
clad_gap_width = 0.0
clad_top_gap_height = 0.0
clad_bot_gap_height = 0.0
clad_thickness = 0.38e-3
pellet_height = 0.5
pellet_quantity = 1
clad_mesh_density = customize
nx_c = 2
ny_c = 50
elem_type = QUAD8
[]
[]
[Variables]
[temperature]
initial_condition = 600.0
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 40'
y = '1 1'
[]
[temp_function]
type = PiecewiseLinear
y = '600 1600'
[]
[temperature_profile]
type = PiecewiseBilinear
y = '0 40'
x = '0 0.25224 0.50448'
z = '0.995 1.01 0.995 0.995 1.01 0.995'
axis = 1
[]
[inner_temperature]
type = CompositeFunction
functions = 'temp_function temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
factor = 0.0
function = pressure_function
[]
[inner_surface]
boundary = 'clad_inside_right clad_inside_bottom clad_inside_top'
function = pressure_function
[]
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 1001
value = 0.0
[]
[x_fix]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
function = inner_temperature
variable = temperature
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[Materials]
[clad_thermal]
type = ZryThermal
block = clad
zry_thermal_properties_model = MATPRO
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = true
matpro_poissons_ratio = true
temperature = temperature
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = true
model_thermal_creep = true
temperature_loca_creep_begin = 840 # values from the report
temperature_standard_thermal_creep_end = 975
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 600.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-5
nl_abs_tol = 1.0e-8
start_time = 0
n_startup_steps = 1
end_time = 40
dtmax = 1
dtmin = 0.0000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 1.0
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = all_clad_interior
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = total_hoop_strain
[]
[max_disp_x]
type = NodalExtremeValue
block = clad
value_type = max
variable = disp_x
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[csv]
type = CSV
[]
[chkfile]
type = CSV
show = 'max_disp_x max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = false
[]
[]
(assessment/nitride/PW-CANEL/SNAP50/analysis/PW_SNAP50_UN_Pin_base.i)
[GlobalParams]
order = FIRST
energy_per_fission = ${energy_per_fission}
displacements = 'disp_x disp_y'
value_range_behavior = IGNORE
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
converge_on = 'disp_x disp_y temperature'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${cladding_liner_thickness}
pellet_outer_radius = ${fuel_radius}
pellet_height = ${fuel_height}
clad_top_gap_height = ${plenum_height}
clad_gap_width = ${cladding_gap_width}
bottom_clad_height = ${cladding_bottom_top_plug_length}
top_clad_height = ${cladding_bottom_top_plug_length}
clad_bot_gap_height = ${gap_bottom_length}
liner_thickness = ${liner_thickness}
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = 3
ny_cl = 3
nx_liner = 2
pellet_quantity = 1
elem_type = QUAD4
[]
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 ${time_end_ramp_up} ${time_start_ramp_down} ${time_end_ramp_down}'
y = '0 ${avg_lin_power} ${avg_lin_power} 0'
[]
[coolant_wall_temperature]
type = ParsedFunction
expression = 'if(t<${time_end_ramp_up}, ${initial_temperature} + t*(${a}*(y-${x_0})^2 + ${b} - ${initial_temperature})/(${time_end_ramp_up}),if(t<${time_start_ramp_down},${a}*(y-${x_0})^2 + ${b}, if(t<${time_end_ramp_down}, ${a}*(y-${x_0})^2 + ${b} + (t-${time_start_ramp_down})*(${initial_temperature}-(${a}*(y-${x_0})^2 + ${b}))/(${time_end_ramp_down}-${time_start_ramp_down}),${initial_temperature}))) '
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 ${run_time}'
y = '${coolant_pressure} ${coolant_pressure}' # unknown, Li coolant
[]
[plenum_pressure]
type = ConstantFunction
value = ${initial_plenum_pressure}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet
strain = FINITE
add_variables = true
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
eigenstrain_names = 'fuel_thermal_expansion solid_swelling_eigenstrain'
temperature = temperature
[]
[clad]
block = clad
strain = FINITE
incremental = true
add_variables = true
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
eigenstrain_names = 'clad_thermal_expansion'
temperature = temperature
[]
[liner]
block = liner
strain = FINITE
incremental = true
add_variables = true
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
eigenstrain_names = 'liner_thermal_expansion'
temperature = temperature
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
block = 'pellet liner clad'
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet liner clad'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet liner clad'
[]
[heat_source]
type = FissionRateHeatSource
variable = temperature
fission_rate = fission_rate
extra_vector_tags = 'ref'
energy_deposited_in_fuel = 0.95
block = 'pellet'
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5' # clad_inside_right
secondary_boundary = '10' # pellet_outer_radial_surface
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = 5 # clad_inside_right
secondary = 10 # pellet_outer_radial_surface
c_normal = 1e+11
correct_edge_dropping = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12' # centerline
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = '1' # clad_outside_bottom
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = '20' # bottom_of_bottom_pellet
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3' # clad_outside_bottom, clad_outside_right, clad_outside_top
function = coolant_press_ramp
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9 # inside_surfaces
initial_pressure = ${initial_plenum_pressure}
startup_time = 0
R = ${R}
initial_temperature = ${initial_temperature}
temperature = ave_temperature_interior # coupling to post processor to get gas temperature approximation
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
volume = gas_volume # coupling to post processor to get gas volume
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[clad_outer_temperature]
type = FunctionDirichletBC
boundary = '1 2 3' # clad_outside_bottom, clad_outside_right, clad_outside_top
function = coolant_wall_temperature
variable = temperature
[]
[]
[Materials]
[porosity]
type = GenericConstantMaterial
block = pellet
prop_names = porosity
prop_values = ${initial_porosity}
outputs = all
[]
[fission_rate]
type = FissionRate
block = pellet
rod_linear_power = power_history
axial_power_profile = 1
pellet_radius = ${fuel_radius}
outputs = all
[]
[fuel_thermal]
type = MNThermal
block = pellet
temperature = temperature
porosity = porosity
outputs = all
[]
[fuel_elasticity_tensor]
block = pellet
type = MNElasticityTensor
temperature = temperature
porosity = porosity
output_properties = 'youngs_modulus poissons_ratio'
outputs = all
[]
[fuel_thermal_expansion]
block = pellet
type = MNThermalExpansionEigenstrain
eigenstrain_name = fuel_thermal_expansion
stress_free_temperature = ${stress_free_temperature_MN}
temperature = temperature
[]
[fuel_creep]
block = pellet
type = MNCreepUpdate
max_inelastic_increment = 1e-4
temperature = temperature
porosity = porosity
fission_rate = fission_rate
outputs = all
[]
[burnup]
type = Burnup
block = pellet
atoms_heavy_metal_per_volume = ${atoms_heavy_metal_per_volume}
outputs = all
[]
[burnup_swelling]
type = BurnupDependentEigenstrain
block = pellet
eigenstrain_name = 'solid_swelling_eigenstrain'
burnup = burnup
outputs = all
[]
[fuel_radial_return_stress]
block = pellet
type = ComputeMultipleInelasticStress
inelastic_models = 'fuel_creep'
[]
[fuel_density]
block = pellet
type = StrainAdjustedDensity
strain_free_density = ${density}
[]
[clad_elasticity_tensor]
block = clad
type = ComputeIsotropicElasticityTensor
youngs_modulus = 68.9e9
poissons_ratio = 0.4
[]
[clad_thermal_expansion]
block = clad
type = ComputeThermalExpansionEigenstrain
eigenstrain_name = clad_thermal_expansion
thermal_expansion_coeff = 7.54e-6
stress_free_temperature = ${stress_free_temperature_NbZr}
temperature = temperature
[]
[clad_stress]
block = clad
type = ComputeFiniteStrainElasticStress
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 41.9
specific_heat = 270
[]
[clad_density]
block = clad
type = StrainAdjustedDensity
strain_free_density = 8590
[]
[liner_elasticity_tensor]
block = liner
type = TungstenElasticityTensor
temperature = temperature
[]
[liner_thermal_expansion]
block = liner
type = TungstenThermalExpansionEigenstrain
eigenstrain_name = liner_thermal_expansion
stress_free_temperature = ${stress_free_temperature_W}
temperature = temperature
[]
[liner_stress]
block = liner
type = ComputeFiniteStrainElasticStress
[]
[liner_thermal]
block = liner
type = TungstenThermal
temperature = temperature
[]
[liner_density]
block = liner
type = StrainAdjustedDensity
strain_free_density = 19300
[]
[]
[Dampers]
[disp_x]
type = MaxIncrement
variable = disp_x
max_increment = 1e-4
min_damping = 1e-4
[]
[disp_y]
type = MaxIncrement
variable = disp_y
max_increment = 1e-3
min_damping = 1e-4
[]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
min_damping = 1e-4
[]
[]
[Executioner]
type = Transient
# With mortar contact
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-15'
snesmf_reuse_base = false
line_search = 'none'
l_max_its = 60
nl_max_its = 20
nl_rel_tol = 5e-6
nl_abs_tol = 5e-9
end_time = ${run_time}
dtmin = 1
dtmax = 5e4
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = time_step_limit
force_step_every_function_point = true
timestep_limiting_function = power_history
dt = 10
[]
[]
[Postprocessors]
# elemental temperatures
[temperature_fuel_avg]
type = ElementAverageValue
variable = temperature
block = pellet
execute_on = 'initial timestep_end'
[]
[temperature_fuel_max]
type = ElementExtremeValue
variable = temperature
block = pellet
[]
[temperature_fuel_min]
type = ElementExtremeValue
variable = temperature
block = pellet
value_type = min
[]
[temperature_clad_avg]
type = ElementAverageValue
variable = temperature
block = clad
execute_on = 'initial timestep_end'
[]
[temperature_clad_max]
type = ElementExtremeValue
variable = temperature
block = clad
[]
[temperature_clad_min]
type = ElementExtremeValue
variable = temperature
block = clad
value_type = min
[]
[temperature_liner_avg]
type = ElementAverageValue
variable = temperature
block = liner
execute_on = 'initial timestep_end'
[]
[temperature_liner_max]
type = ElementExtremeValue
variable = temperature
block = liner
[]
[temperature_liner_min]
type = ElementExtremeValue
variable = temperature
block = liner
value_type = min
[]
[ave_temperature_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = '9' # inside_surfaces
variable = temperature
execute_on = 'initial linear'
[]
[temperature_fuel_centerline_avg]
type = AxisymmetricCenterlineAverageValue
boundary = '12' # centerline
variable = temperature
[]
[temperature_fuel_centerline_max]
type = NodalExtremeValue
boundary = '12' # centerline
variable = temperature
[]
[temperature_fuel_centerline_min]
type = NodalExtremeValue
boundary = '12' # centerline
variable = temperature
value_type = min
[]
[temperature_fuel_surface_avg]
type = SideAverageValue
boundary = '10' # pellet_outer_radial_surface
variable = temperature
[]
[temperature_fuel_surface_max]
type = NodalExtremeValue
boundary = '10' # pellet_outer_radial_surface
variable = temperature
[]
[temperature_fuel_surface_min]
type = NodalExtremeValue
boundary = '10' # pellet_outer_radial_surface
variable = temperature
value_type = min
[]
# stresses
[stress_vonmises_fuel_avg]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[stress_vonmises_fuel_max]
type = ElementExtremeValue
variable = vonmises_stress
block = pellet
[]
[stress_vonmises_fuel_min]
type = ElementExtremeValue
variable = vonmises_stress
value_type = min
block = pellet
[]
[stress_hydro_fuel_avg]
type = ElementAverageValue
variable = hydrostatic_stress
block = pellet
[]
[stress_hydro_fuel_max]
type = ElementExtremeValue
variable = hydrostatic_stress
block = pellet
[]
[stress_hydro_fuel_min]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
# strain information
[strain_solid_swelling_fuel_avg]
type = ElementAverageValue
variable = solid_swelling
block = pellet
[]
[strain_volumetric_fuel_avg]
type = ElementAverageValue
variable = firstinv_strain
block = pellet
[]
[strain_axial_fuel_avg]
type = ParsedPostprocessor
pp_names = 'disp_y_fuel_top_surface_avg disp_y_fuel_bottom_surface_avg'
expression = '(disp_y_fuel_top_surface_avg - disp_y_fuel_bottom_surface_avg) / ${fuel_height}'
[]
[disp_y_fuel_top_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = '11' # top_of_top_pellet
[]
[disp_y_fuel_top_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = '11' # top_of_top_pellet
[]
[disp_y_fuel_bottom_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = '20' # bottom_of_bottom_pellet
[]
[disp_y_fuel_bottom_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = '20' # bottom_of_bottom_pellet
[]
[disp_x_fuel_radial_surface_max]
type = NodalExtremeValue
variable = disp_x
boundary = '10' # pellet_outer_radial_surface
[]
[disp_x_fuel_radial_surface_avg]
type = SideAverageValue
variable = disp_x
boundary = '10' # pellet_outer_radial_surface
[]
[burnup_avg]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[burnup_max]
type = ElementExtremeValue
block = pellet
variable = burnup
[]
[fission_rate_avg]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity_fuel_avg]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[porosity_fuel_max]
type = ElementExtremeValue
variable = porosity
block = pellet
[]
[porosity_fuel_min]
type = ElementExtremeValue
variable = porosity
value_type = min
block = pellet
[]
[swelling_dia_percent]
type = ParsedPostprocessor
pp_names = 'disp_x_fuel_radial_surface_avg'
expression = 'disp_x_fuel_radial_surface_avg / 3.14159 / ${fuel_radius} * 100'
[]
[fuel_volume]
type = VolumePostprocessor
block = pellet
execute_on = 'TIMESTEP_END INITIAL'
use_displaced_mesh = true
[]
[swelling_vol_percent]
type = ParsedPostprocessor
pp_names = 'fuel_volume'
expression = '(fuel_volume - ${fuel_volume}) / ${fuel_volume} * 100'
[]
[gas_volume]
type = InternalVolume
boundary = '9' # inside_surfaces
execute_on = 'initial linear'
[]
# extras
[actual_time_step_limit]
type = MaterialTimeStepPostprocessor
outputs = none
block = 'pellet'
[]
[time_step_limit]
type = ParsedPostprocessor
expression = 'if(actual_time_step_limit > 1e6, 1e6, actual_time_step_limit)'
pp_names = 'actual_time_step_limit'
[]
[]
[PerformanceMetricOutputs]
outputs = 'performance_metrics performance_metrics_sync exodus console base_out'
[]
[Outputs]
perf_graph = true
csv = true
sync_times = '1e2 1e3 5e3 1e4 5e4 1e5 5e5 1e6 2.5e6 5e6 1e7 2e7 3e7 ${fparse run_time -1e3} ${run_time}'
file_base = '${group_name}_nominal_Pin'
[base_out]
type = CSV
file_base = '${group_name}_Pin_base_out'
show = 'burnup_max temperature_fuel_avg temperature_clad_avg temperature_liner_avg ave_temperature_interior swelling_vol_percent disp_x_fuel_radial_surface_max'
sync_only = true
[]
[checkpoint]
type = Checkpoint
time_step_interval = 10
[]
[exodus]
type = Exodus
[]
[sync]
type = CSV
file_base = '${group_name}_nominal_Pin_sync'
sync_only = true
[]
[console]
type = Console
show = 'time_step_size temperature_fuel_avg temperature_fuel_centerline_max stress_vonmises_fuel_max stress_hydro_fuel_max stress_hydro_fuel_min strain_axial_fuel_avg burnup_avg fission_rate_avg porosity_fuel_avg time_step_limit disp_x_fuel_radial_surface_max disp_x_fuel_radial_surface_avg swelling_dia_percent swelling_vol_percent fuel_volume'
[]
[performance_metrics]
type = CSV
file_base = '${group_name}_nominal_performance_metrics_Pin'
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[performance_metrics_sync]
type = CSV
sync_only = true
file_base = '${group_name}_nominal_performance_metrics_Pin_sync'
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temperature'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_H/x441_grp_H.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/Tribulation/analysis/BN3X15/BN3X15.i)
initial_fuel_density = 10414
[GlobalParams]
density = ${initial_fuel_density} # 94.843 % TD assuming TS 10980
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
initial_porosity = 0.05157
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9956
pellet_outer_radius = 0.00402
pellet_mesh_density = customize
nx_p = 11
ny_p = 243
clad_bot_gap_height = 0.001
clad_gap_width = 100.0e-6
clad_thickness = 0.00063
clad_mesh_density = customize
nx_c = 4
ny_c = 249
bottom_clad_height = 0.00224
top_clad_height = 0.00224
clad_top_gap_height = 0.0952
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = 3
initial_condition = 8.39e-6 # 2D grain radius 10.76e-6/2*1.56
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseBilinear
data_file = BN3X15_power.csv
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 50807520 50893920 50980320 85442688 85529088 85615488 121321152 121407552'
y = '0.0073804 1 1 0.0073804 1 1 0.0073804 1 1 0.0073804'
[]
[flux]
type = PiecewiseBilinear
data_file = BN3X15_fast_flux.csv
axis = 1
[]
[clad_temp_bc]
type = PiecewiseBilinear
data_file = BN3X15_clad_temp.csv
axis = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[timestep_function]
type = PiecewiseLinear
data_file = BN3X15_time_function.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = 3
burnup_function = burnup
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = 1
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0576 0.9424 0 0 0 0'
RPF = RPF
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 0.3e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 13.729e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 980665
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.017
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10414
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = NO_TRANSIENT
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 121407552
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 20
iteration_window = 2
linear_iteration_ratio = 100
timestep_limiting_function = timestep_function
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
burnup_function = burnup
variable = temp
[]
[fuel_max_temp]
type = ElementExtremeValue
block = 3
variable = temp
[]
[fuel_average_temp]
type = ElementAverageValue
block = 3
variable = temp
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage fuel_average_temp'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK4/FK04.i)
# This file was created using BIF with the following inputs:
# FK04/FK04.var - md5sum: 789d603cfbdaaeb2625ea98056214f6f
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.053182
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
block = '1 3'
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.5e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.20e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.20e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.20e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim_DiffCoeff4_GrainGrowth.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.2
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9144
pellet_outer_radius = 2.794e-3
pellet_inner_radius = 6.985e-4
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 101.6e-6
clad_thickness = 0.5334e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.057
elem_type = QUAD8
nx_c = 4
ny_c = 1000
nx_p = 10
ny_p = 500
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
scaling = 1
[]
[]
[AuxVariables]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fraction_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 0.854004932 0.854004932'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 2.99513e+19 2.99513e+19'
[]
[axial_power_profile]
type = PiecewiseBilinear
x = '0.0334152 0.09468 0.1559448 0.2162952 0.27756 0.3388248 0.3991752 0.46044 0.5217048 0.5820552 0.64332 0.7045848 0.7649352 0.8262 0.8874648'
y = '0 31858942.74'
z = '5493.43832 7183.727034 29157.48031 34228.34646 37608.92388 40144.35696 41412.07349 42257.21785 41834.64567 39721.78478 37608.92388 33805.77428 28312.33596 4225.721785 2535.433071 5041.338583 6592.519685 26757.87402 31411.41732 34513.77953 36840.55118 38003.93701 38779.52756 38391.73228 36452.75591 34513.77953 31023.62205 25982.28346 3877.952756 2326.771654'
scale_factor = 1
axis = 1
[]
[average_power_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 24264.05646 24264.05646'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.2
axial_power_profile = axial_power_profile
rod_ave_lin_pow = fraction_history
pellet_diameter = 0.005588
execute_on = timestep_begin
pellet_inner_diameter = 0.001397
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 0.151e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 0.151e6
inlet_massflux = 1687.43
rod_diameter = 6.858e-3
rod_pitch = 1.7e-2
linear_heat_rate = fraction_history
axial_power_profile = axial_power_profile
coolant_material = sodium
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = 0.2
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
outputs = exodus
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
bubble_gb_limit = 1.0e+11
diff_coeff_option = TURNBULL_D1_4D2_4D3
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fast_neutron_flux]
type = GenericFunctionMaterial
block = clad
prop_names = fast_neutron_flux
prop_values = fast_neutron_flux_function
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 31858942.74
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = fraction_history
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.9144 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = fftf_fo2_L09_new_DiffCoeff4_GrainGrowth_chkfile
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/LWR/validation/Tribulation/analysis/BN1X4/BN1X4.i)
initial_fuel_density = 10373
[GlobalParams]
density = ${initial_fuel_density} # 94.747 % TD assuming TS 10980
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
initial_porosity = 0.05526
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9976
pellet_outer_radius = 0.00402
pellet_mesh_density = customize
nx_p = 11
ny_p = 243
clad_bot_gap_height = 0.001
clad_gap_width = 100.0e-6
clad_thickness = 0.00063
clad_mesh_density = customize
nx_c = 4
ny_c = 249
bottom_clad_height = 0.00224
top_clad_height = 0.00224
clad_top_gap_height = 0.0934
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = 3
initial_condition = 8.58e-6 # 2D grain radius 11e-6/2*1.56
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseBilinear
data_file = BN1X4_power.csv
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 34462368 34548768 34635168 90055584 90141984'
y = '0.0073804 1 1 0.0073804 1 1 0.0073804'
[]
[flux]
type = PiecewiseBilinear
data_file = BN1X4_fast_flux.csv
axis = 1
[]
[clad_temp_bc]
type = PiecewiseBilinear
data_file = BN1X4_clad_temp.csv
axis = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[timestep_function]
type = PiecewiseLinear
data_file = BN1X4_time_function.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = 3
burnup_function = burnup
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = 1
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0825 0.9175 0 0 0 0'
RPF = RPF
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 0.3e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 13.729e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.96133e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.025
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10373
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = NO_TRANSIENT
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 90141984
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 20
iteration_window = 2
linear_iteration_ratio = 100
timestep_limiting_function = timestep_function
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
burnup_function = burnup
variable = temp
[]
[fuel_max_temp]
type = ElementExtremeValue
block = 3
variable = temp
[]
[fuel_average_temp]
type = ElementAverageValue
block = 3
variable = temp
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage fuel_average_temp'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
(assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_old_bubble_gb_lim.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.2
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9144
pellet_outer_radius = 2.794e-3
pellet_inner_radius = 6.985e-4
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 101.6e-6
clad_thickness = 0.5334e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.057
elem_type = QUAD8
nx_c = 4
ny_c = 1000
nx_p = 10
ny_p = 500
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
scaling = 1
[]
[]
[AuxVariables]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fraction_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 0.854004932 0.854004932'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 2.99513e+19 2.99513e+19'
[]
[axial_power_profile]
type = PiecewiseBilinear
x = '0.0334152 0.09468 0.1559448 0.2162952 0.27756 0.3388248 0.3991752 0.46044 0.5217048 0.5820552 0.64332 0.7045848 0.7649352 0.8262 0.8874648'
y = '0 31858942.74'
z = '5493.43832 7183.727034 29157.48031 34228.34646 37608.92388 40144.35696 41412.07349 42257.21785 41834.64567 39721.78478 37608.92388 33805.77428 28312.33596 4225.721785 2535.433071 5041.338583 6592.519685 26757.87402 31411.41732 34513.77953 36840.55118 38003.93701 38779.52756 38391.73228 36452.75591 34513.77953 31023.62205 25982.28346 3877.952756 2326.771654'
scale_factor = 1
axis = 1
[]
[average_power_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 24264.05646 24264.05646'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.2
axial_power_profile = axial_power_profile
rod_ave_lin_pow = fraction_history
pellet_diameter = 0.005588
execute_on = timestep_begin
pellet_inner_diameter = 0.001397
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 0.151e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 0.151e6
inlet_massflux = 1687.43
rod_diameter = 6.858e-3
rod_pitch = 1.7e-2
linear_heat_rate = fraction_history
axial_power_profile = axial_power_profile
coolant_material = sodium
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = 0.2
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
outputs = exodus
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fast_neutron_flux]
type = GenericFunctionMaterial
block = clad
prop_names = fast_neutron_flux
prop_values = fast_neutron_flux_function
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 31858942.74
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = fraction_history
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.9144 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = fftf_fo2_L09_old_chkfile
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part2.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
restart_file_base = 'Studsvik_191_part1_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[smeared_mesh]
type = FuelPinMeshGenerator
clad_top_gap_height = 0.021861442
pellet_height = 0.265388558
pellet_quantity = 1
clad_bot_gap_height = 0.01275
pellet_outer_radius = 4.1e-3
clad_gap_width = 80e-6
clad_thickness = 0.57e-3
clad_mesh_density = customize
pellet_mesh_density = customize
nx_c = 5
ny_c = 50
nx_p = 11
ny_p = 60
elem_type = QUAD8
[]
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
[]
[]
[AuxVariables]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxygen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0 166755600 166842000'
y = '0.006537 1 1 0.006537'
scale_factor = 15.5e6
[]
[clad_surface_temperature]
type = PiecewiseBilinear
axis = 1
data_file = clad_temperature.csv
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_relocation_eigenstrain fuel_volumetric_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
temperature = temperature
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
temperature = temperature
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.05 0.95 0 0 0 0'
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = MaterialRealAux
boundary = 2
variable = scale_thickness
property = oxide_scale_thickness
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
boundary = 2
variable = burst_stress
property = burst_stress
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
quadrature = true
contact_pressure = contact_pressure
refab_gas_types = He
refab_fractions = 1
refab_time = 166842000
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 3.44738e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
refab_time = 166842000
refab_pressure = 11e6
refab_temperature = 295.0
refab_volume = 1.04e-05
cladding_failure_status = burst
equilibrium_pressure = equilibrium_pressure
additional_volumes = additional_volume
temperature_of_additional_volumes = addition_temperature
[]
[]
[clad_temp]
type = FunctionDirichletBC
function = clad_surface_temperature
variable = temperature
boundary = 2
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
# [terminator]
# type = Terminator
# expression = 'burst > 0'
# []
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.0095 # 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'
[]
[]
[Materials]
[uo2_pulverization]
type = UO2Pulverization
block = pellet
layered_average_contact_pressure = contact_pressure
temperature = temperature
burnup_function = burnup
output_properties = pulverized
outputs = all
[]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = pellet
fragmentation_model = BARANI
rod_ave_lin_pow = power_history
temperature = temperature
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = pellet
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
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
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_eigenstrain
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
block = clad
type = ZryThermal
temperature = temperature
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temperature
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
# effective_strain_rate_creep = creep_strain_rate
# failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = stress_zz
hoop_creep_strain = creep_strain_zz
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
# n_startup_steps = 1
end_time = 166843509.6
dtmax = 20
dtmin = 1e-6
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
timestep_limiting_function = forced_times
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fission_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[max_clad_hoop_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = strain_zz
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[volume_pulverized]
type = ElementIntegralMaterialProperty
mat_prop = pulverized
block = pellet
[]
[max_fuel_temp_periphery]
type = NodalExtremeValue
value_type = max
variable = temperature
boundary = 10
[]
[additional_volume]
type = FunctionValuePostprocessor
function = 8.5e-6
execute_on = 'initial linear'
[]
[addition_temperature]
type = FunctionValuePostprocessor
function = 300.0
execute_on = 'initial linear'
[]
[equilibrium_pressure]
type = FunctionValuePostprocessor
function = 101325.0
execute_on = 'initial linear'
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[chkfile]
type = CSV
execute_on = FINAL
show = 'volume_pulverized'
[]
[]
(test/tests/standard_lwr_outputs_action/mini_complete_rod.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 2
pellet_mesh_density = coarse
clad_mesh_density = coarse
plenum_fuel_ratio = 0.177033
[]
[]
[Variables]
[temperature]
initial_condition = 580.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0.000000 10800'
y = '0.000000 16404.200000' #LHR5
scale_factor = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.00324 3.77797'
y = '0.000000 10800'
z = '1.0 1.0 1.0 1.0'
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
scale_factor = 1
x = '0 10800.0'
y = '0.00651 1.0'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = finite
[]
[clad]
block = clad
add_variables = true
strain = finite
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 6
num_axial = 2
a_lower = 0.00351
a_upper = 0.02723
fuel_inner_radius = 0
fuel_outer_radius = .0041
fuel_volume_ratio = 1
order = CONSTANT
family = MONOMIAL
RPF = RPF
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
output_initial_moles = initial_moles
temperature = plenum_temperature ## generated by the standard outputs action
volume = plenum_volume ## generated by the standard outputs action
material_input = fission_gas_released ## generated by the standard outputs action
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeFiniteStrainElasticStress
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temperature
burnup_function = burnup
gbs_model = false
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = 0
end_time = 200
dtmax = 200
dtmin = 200
[]
[StandardLWRFuelRodOutputs]
rod_component = both
fuel_pellet_blocks = pellet
[]
[Outputs]
exodus = false
color = false
csv = true
perf_graph = true
[]
(assessment/MOX/JOYO/B14/PTM010/analysis/b14_ptm010_2DRZ_t.i)
initial_fuel_density = 10964.6
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.4
pellet_outer_radius = 0.002675
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000105
clad_thickness = 0.00047
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.685
elem_type = QUAD8
nx_c = 4
ny_c = 100
nx_p = 20
ny_p = 100
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
[]
[burnup]
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 39814.5 39814.5 44289.3 44289.3 53927.4 53927.4 0'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 251280'
y = '3.3e+15 3.3e+15'
[]
[f_temp_out_clad]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 634.94 662.273 676.998 686.217 706.339 727 743.358 758.311 780.069 799.077 815.576 846.374 860.233 875.494 882.809 889.8'
scale_factor = 1
axis = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846 0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 34700 34700 38600 38600 47000 47000 0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.143
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.00535
execute_on = timestep_begin
porosity = pore
energy_per_fission = 3.2e-11
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[temp_clad_outside]
type = FunctionDirichletBC
variable = temp
function = f_temp_out_clad
boundary = 2
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
temperature = temp
porosity = pore
block = pellet
Am_content = 0.0237
oxy_to_metal_ratio = 1.99
output_properties = 'thermal_conductivity'
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10964.6
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius_const = 10e-06
bubble_gb_limit = 1.0e+11
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
line_search = 'none'
fixed_point_max_its = 1
fixed_point_abs_tol = 1e-3
fixed_point_rel_tol = 1e-3
l_max_its = 50
l_tol = 8e-3
nl_max_its = 50
nl_rel_tol = 1e-3
nl_abs_tol = 1e-3
start_time = 0
n_startup_steps = 1
end_time = 251280
dtmax = 10000
dtmin = 0.25
automatic_scaling = true
compute_scaling_once = false
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e1
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = ElementAverageValue
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
variable = burnup
[]
[ave_pore]
type = ElementAverageValue
block = pellet
variable = pore
[]
[max_pore]
type = NodalExtremeValue
block = pellet
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
block = pellet
value_type = min
variable = pore
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.4 # rod height
[]
[]
[VectorPostprocessors]
[fuel_radial_temperature_Sample1]
type = LineValueSampler
variable = temp
start_point = '0.0 0.283 0.0'
end_point = '0.002675 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample1]
type = LineValueSampler
variable = pore
start_point = '0.0 0.283 0.0'
end_point = '0.002675 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample2]
type = LineValueSampler
variable = temp
start_point = '0.0 0.347 0.0'
end_point = '0.002675 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample2]
type = LineValueSampler
variable = pore
start_point = '0.0 0.347 0.0'
end_point = '0.002675 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample3]
type = LineValueSampler
variable = temp
start_point = '0.0 0.2 0.0'
end_point = '0.002675 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample3]
type = LineValueSampler
variable = pore
start_point = '0.0 0.2 0.0'
end_point = '0.002675 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[line_plot]
type = CSV
execute_on = 'FINAL'
time_step_interval = 1
file_base = 1d
create_final_symlink = true
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = b14_ptm010_pore.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/LWR/validation/IFA_636/analysis/IFA_636_solid_swell/IFA_636_solid_swell.i)
initial_fuel_density = 10551.78
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_mesh_density = customize
clad_mesh_density = customize
pellet_quantity = 1
pellet_height = 0.392
pellet_outer_radius = 4.097e-3
ny_p = 40
nx_p = 11
clad_gap_width = 78e-6
clad_bot_gap_height = 1e-3
plenum_fuel_ratio = 0.21628
clad_thickness = 0.5715e-3
nx_c = 4
ny_c = 80
ny_cl = 3
ny_cu = 3
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 5e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_swe]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = IFA_636_power_history.csv
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = IFA_636_axial_peaking.csv
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 213162351 213260400'
y = '0.0307 1 1 0.0307'
[]
[clad_temp_bc]
type = PiecewiseLinear
data_file = IFA_636_clad_bc.csv
format = columns
scale_factor = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_swelling_eigenstrain
fuel_relocation_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
creep_strain_xx creep_strain_xy creep_strain_yy creep_strain_zz'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
factor = 1.6e12
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[dvv0swe]
type = MaterialRealAux
variable = deltav_v0_swe
property = volumetric_swelling_strain
execute_on = timestep_end
block = pellet
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00324000
a_upper = 0.39524
fuel_volume_ratio = 1
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0040975
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0425 0.9575 0 0 0 0'
RPF = RPF
order = CONSTANT
family = MONOMIAL
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.33e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.0e6
startup_time = 0
R = 8.3145
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet
initial_fuel_density = 10551.78
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_swelling_eigenstrain
[]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.039
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
temperature = temp
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 293.0
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
diameter = 0.008194
diametral_gap =156.0e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.029
relocation_activation1 = 5000
eigenstrain_name = fuel_relocation_eigenstrain
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
initial_porosity = 0.039
gbs_model = true
transient_option = MICROCRACKING
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temp
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
inelastic_models = 'clad_creep'
tangent_operator = 'elastic'
[]
[clad_creep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_fluence = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
zircaloy_material_type = stress_relief_annealed
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradition_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = 3200
min_value = 200
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 213260400
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 15
iteration_window = 2
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
burnup_function = burnup
variable = temp
[]
[fuel_disp_y_average]
type = AverageNodalVariableValue
boundary = top_of_top_pellet
variable = disp_y
[]
[volumetric_strain]
type = ElementAverageValue
block = pellet
variable = deltav_v0_swe
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet
cladding_blocks = clad
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released fuel_disp_y_average rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK7/FK07.i)
# This file was created using BIF with the following inputs:
# FK06/FK06.var - md5sum: 5a60c05af67ba840a89caacf70b852e2
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
# Other changes were added after that process.
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
initial_gas_types = 'He Ar'
initial_fractions = '0.25 0.75'
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.1e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.30e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(test/tests/fuel_pin_mesh_generator/nonzero_inner_radius.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
pellet_inner_radius = 1e-3
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
[]
[pellet_inner_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_inner_radial_surface
value = 1
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM073/BFM073.i)
################################################################################
#
# Description: Calvert Cliffs BFM073
#
#
#
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM073_power.csv
# axial peaking factor file BFM073_axial_peaking.csv
# flux boundary condition file BFM073_fast_flux.csv
################################################################################
initial_fuel_density = 10386.93
[GlobalParams]
density = ${initial_fuel_density} #94.662 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.31914
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM073_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM073_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 179191453 179191813'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 179191453 179191813'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM073_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10386.93
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 179191813
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK2/FK02.i)
# This file was created using BIF with the following inputs:
# FK02.var - md5sum: 123016ae8f3283a45bae816a366f93b1
# ../pulse_rev1.tpl - md5sum: 8d6b8b4bce1dd830dea2d8522009e514
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.03481
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 0.0473684210526 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseBilinear
data_file = RadialPowerProfile.csv
axis = 0
[]
[radial_burnup_profile]
type = PiecewiseBilinear
data_file = RadialBurnupProfile.csv
axis = 0
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.039 0.961 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
friction_coefficient = 2.5
normal_smoothing_distance = 0.1
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 1.0e-6
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10020.6066633
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.085711070864
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 8.40e25
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[contactslip]
type = ContactSlipDamper
primary = 5
secondary = 8
min_damping_factor = 0.05
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/MOX/FFTF/FO-2/L09/analysis/fftf_fo2_L09_master.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.2
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9144
pellet_outer_radius = 2.794e-3
pellet_inner_radius = 6.985e-4
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 101.6e-6
clad_thickness = 0.5334e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.057 #1.058 - 0.001 clad_bot_gap_height
elem_type = QUAD8
nx_c = 4
ny_c = 500
nx_p = 30
ny_p = 500
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
scaling = 1
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[thermal_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fraction_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 0.854004932 0.854004932'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 2.99513e+19 2.99513e+19'
[]
[axial_power_profile]
type = PiecewiseBilinear
x = '0.0334152 0.09468 0.1559448 0.2162952 0.27756 0.3388248 0.3991752 0.46044 0.5217048 0.5820552 0.64332 0.7045848 0.7649352 0.8262 0.8874648'
y = '0 31858942.74'
z = '5493.43832 7183.727034 29157.48031 34228.34646 37608.92388 40144.35696 41412.07349 42257.21785 41834.64567 39721.78478 37608.92388 33805.77428 28312.33596 4225.721785 2535.433071 5041.338583 6592.519685 26757.87402 31411.41732 34513.77953 36840.55118 38003.93701 38779.52756 38391.73228 36452.75591 34513.77953 31023.62205 25982.28346 3877.952756 2326.771654'
scale_factor = 1
axis = 1
[]
[average_power_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 24264.05646 24264.05646'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.2
axial_power_profile = axial_power_profile
rod_ave_lin_pow = fraction_history
pellet_diameter = 0.005588
execute_on = timestep_begin
pellet_inner_diameter = 0.001397
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[conductivity]
type = MaterialRealAux
property = thermal_conductivity
variable = thermal_cond
block = pellet
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 0.151e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 0.151e6
inlet_massflux = 1687.43
rod_diameter = 6.858e-3
rod_pitch = 1.7e-2
linear_heat_rate = fraction_history
axial_power_profile = axial_power_profile
coolant_material = sodium
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
diff_coeff_option = TURNBULL_D1_4D2_4D3
grain_radius_const = 10e-06
bubble_gb_limit = 1.0e+11
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fast_neutron_flux]
type = GenericFunctionMaterial
block = clad
prop_names = fast_neutron_flux
prop_values = fast_neutron_flux_function
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-5
fixed_point_rel_tol = 1e-6
fixed_point_max_its = 1
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-4
start_time = -200
n_startup_steps = 1
end_time = 31858942.74
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = fraction_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.9144 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[VectorPostprocessors]
[clad_surface]
type = LineValueSampler
variable = temp
start_point = '3.4e-3 3.24e-3 0.0'
end_point = '3.4e-3 1.97 0.0'
num_points = 200
sort_by = y
outputs = line_plot
[]
[fuel_radial_temperature_SampleH_master]
type = LineValueSampler
variable = temp
start_point = '6.985e-4 0.432 0.0'
end_point = '2.794e-3 0.432 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_SampleJ_master]
type = LineValueSampler
variable = temp
start_point = '6.985e-4 0.686 0.0'
end_point = '2.794e-3 0.686 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_SampleL_master]
type = LineValueSampler
variable = temp
start_point = '6.985e-4 0.913 0.0'
end_point = '2.794e-3 0.913 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_SampleH_master]
type = LineValueSampler
variable = pore
start_point = '6.985e-4 0.432 0.0'
end_point = '2.794e-3 0.432 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_SampleJ_master]
type = LineValueSampler
variable = pore
start_point = '6.985e-4 0.686 0.0'
end_point = '2.794e-3 0.686 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_SampleL_master]
type = LineValueSampler
variable = pore
start_point = '6.985e-4 0.913 0.0'
end_point = '2.794e-3 0.913 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[line_plot]
type = CSV
execute_on = 'FINAL'
time_step_interval = 1
file_base = 1d
create_final_symlink = true
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = TIMESTEP_END
sub_cycling = false
positions_file = positions.txt
input_files = 'fftf_fo2_L09_sub.i'
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
check_multiapp_execute_on = true
execute_on = SAME_AS_MULTIAPP
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
execute_on = SAME_AS_MULTIAPP
[]
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/1pt0MPa/25C_sec/25C_sec_Hardy_Tube_Test_1pt0MPa.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[gen]
type = FuelPinMeshGenerator
include_fuel = false
include_clad = true
pellet_outer_radius = 0.0072527
clad_gap_width = 0.0
clad_top_gap_height = 0.0
clad_bot_gap_height = 0.0
clad_thickness = 0.38e-3
pellet_height = 0.5
pellet_quantity = 1
clad_mesh_density = customize
nx_c = 2
ny_c = 50
elem_type = QUAD8
[]
[]
[Variables]
[temperature]
initial_condition = 600.0
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 40'
y = '1 1'
[]
[temp_function]
type = PiecewiseLinear
y = '600 1600'
[]
[temperature_profile]
type = PiecewiseBilinear
y = '0 40'
x = '0 0.25224 0.50448'
z = '0.995 1.01 0.995 0.995 1.01 0.995'
axis = 1
[]
[inner_temperature]
type = CompositeFunction
functions = 'temp_function temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
factor = 0.0
function = pressure_function
[]
[inner_surface]
boundary = 'clad_inside_right clad_inside_bottom clad_inside_top'
function = pressure_function
[]
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 1001
value = 0.0
[]
[x_fix]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
function = inner_temperature
variable = temperature
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[Materials]
[clad_thermal]
type = ZryThermal
block = clad
zry_thermal_properties_model = MATPRO
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = true
matpro_poissons_ratio = true
temperature = temperature
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = true
model_thermal_creep = true
temperature_loca_creep_begin = 840 # values from the report
temperature_standard_thermal_creep_end = 975
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 600.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-5
nl_abs_tol = 1.0e-8
start_time = 0
n_startup_steps = 1
end_time = 40
dtmax = 1
dtmin = 0.0000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 1.0
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = all_clad_interior
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = total_hoop_strain
[]
[max_disp_x]
type = NodalExtremeValue
block = clad
value_type = max
variable = disp_x
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[csv]
type = CSV
[]
[chkfile]
type = CSV
show = 'max_disp_x max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = false
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_H/x441_leg_H.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_swelling'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = MaterialRealAux
variable = porosity
property = porosity
block = pellet
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrain
block = pellet
temperature = temp
# hydrostatic_stress = hydrostatic_stress
hydrostatic_stress = 1e6
eigenstrain_name = fuel_volumetric_swelling
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_legacy_swell
[out2]
type = CSV
file_base = x441_${group_name}_legacy_swell_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_legacy_swell_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_legacy_swell_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/x441_base_action.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
temperature = temperature
pellet_radius = ${pellet_outer_radius}
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temperature
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[NuclearMaterials]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress'
add_variables = true
fission_operation = 'Normal'
physics = 'Thermal Mechanics'
extra_vector_tags = 'ref'
stress_free_temperature = 295.0
initial_temperature = 298
strain = FINITE
[UPuZr]
[fuel]
block = pellet
decomposition_method = TaylorExpansion
upuzr_models = 'Elastic Burnup Creep Swelling ThermalExpansion'
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
bubble_number_density = 1e20
max_inelastic_increment = 2e-3
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'porosity gaseous_porosity'
additional_generate_output = 'volumetric_strain'
[]
[]
[HT9]
[clad]
block = clad
decomposition_method = TaylorExpansion
fast_flux_factor = 2.47e19
thermal_expansion_coeff = 1.2e-5
ht9_models = 'Elastic Creep ThermalExpansion'
additional_generate_output = 'hoop_creep_strain hoop_elastic_strain hoop_strain'
[]
[]
[]
[Materials]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temperature
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temperature
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temperature
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temperature
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temperature
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temperature
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
block = pellet
mat_prop = fis_gas_rel
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temperature
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temperature
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temperature
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_action_nominal
[out2]
type = CSV
file_base = x441_${group_name}_action_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_action_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_action_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_action_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_action_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_action_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_action_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_action_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_action_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_action_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temperature'
show_var_residual_norms = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM034/BFM034.i)
################################################################################
#
# Description: Calvert Cliffs BFM034
#
#
#
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM034_power.csv
# axial peaking factor file BFM034_axial_peaking.csv
# flux boundary condition file BFM034_fast_flux.csv
################################################################################
initial_fuel_density = 10386.93
[GlobalParams]
density = ${initial_fuel_density} #94.662 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.31392
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM034_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM034_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 179410295 179410655'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 179410295 179410655'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM034_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10386.93
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 179410655
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/ifba_he_production/ifba_examp_template.i)
#
# 2-D RZ One Pellet Test - Coarse mesh example of IFBA layer
#
# This is an input template for a fast running example using the IFBA
# postprocessor. All of the possible ways to specify the IFBA layer are run
# using this template in a regression test format.
#
# The expected ouputs for each test depends on the model equation being used
# to calculate the He produced. For the burnup based equation, the He moles
# released at the end of the calculation is 1.4897e-6. A hand calculation is
# reproduced in the Excel spreadsheet IFBA_He_Calc included in the test
# directory. The burnup equation result computed for the same inputs is
# 1.4902e-6.
#
# Using the FRAPCON equation calculates a rate of He production, so comparing
# the first couple of time steps of the simulation to the hand calculation is
# more straightforward. Comparing the BISON results to the hand calculation is
#
# Time(s) He Prod (BISON) He Prod (Excel)
# 1000 1.01465e-10 1.01465e-10
# 3000 7.10250e-10 7.18769e-10
#
initial_fuel_density = 10431.0 #95% TD (TD = 10980)
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
temperature = temp
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 1
nx_p = 1
nx_c = 1
ny_cu = 1
ny_c = 1
ny_cl = 1
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[grain_radius]
block = '3'
initial_condition = 5e-6
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 20e3 # 20 kW/m peak power.
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = 'fuel_thermal_strain'
[]
[clad]
block = 1
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = 'clad_thermal_strain'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
value = 5.3548e+14
fission_rate_function = power_history
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = 'fis_gas_released he_prod'
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
released_gas_types = 'Kr Xe;
He'
released_fractions = '0.153 0.847;
1'
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Clad_Temp]
type = DirichletBC
variable = temp
boundary = '2'
value = 580.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
refab_pressure = 0.50e6
startup_time = 0.0
material_input = 'fis_gas_released he_prod'
output_initial_moles = initial_moles
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 298
eigenstrain_name = 'fuel_thermal_strain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[fclad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 298
eigenstrain_name = 'clad_thermal_strain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 2.5e6
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e5 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01 #BWR change: length of fuel stack in meters (5*pellet height)
[]
[he_prod]
type = IFBAHeProduction
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup burnup he_prod interior_temp plenum_pressure'
[]
[outfile]
type = CSV
delimiter = ' '
[]
[]
(assessment/carbide/EBRII/WSA32/analysis/base.i)
initial_fuel_density = 13630.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
value_range_behavior = IGNORE
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
use_displaced_mesh = false
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.508e-3
pellet_outer_radius = 4.301e-3
pellet_height = 343e-3
clad_top_gap_height = 43.5e-3
clad_gap_width = 0.145e-3
bottom_clad_height = 8e-3
top_clad_height = 8e-3
clad_bot_gap_height = 0.2e-3 # unknown
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = 3
ny_cl = 3
pellet_quantity = 1
elem_type = QUAD8
[]
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 350
[]
[]
[AuxVariables]
[contact_pressure]
[]
[layered_side_contact_pressure]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[pellet_wall_temp]
order = CONSTANT
family = MONOMIAL
[]
[radial_heat_flux]
order = CONSTANT
family = MONOMIAL
[]
[clad_inner_wall_temp]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 70e6 70100000' # unknown, final burnup was 12.2 %
y = '0 1 1 0'
[]
[axial_peaking_factors]
type = PiecewiseLinear
axis = y
x = '0 46e-3 111e-3 200e-3 248e-3 313e-3 352e-3'
y = '86e3 86e3 97e3 100e3 96e3 87e3 87e3'
[]
[fission_func]
type = ParsedFunction
symbol_names = 'axial_peaking_factors power_history'
symbol_values = 'axial_peaking_factors power_history'
expression = 'linear_heating_rate := axial_peaking_factors * power_history;
pellet_cross_sectional_area := 3.14159 * pow( 4.301e-3, 2 );
volumetric_power := linear_heating_rate / pellet_cross_sectional_area;
energy_per_fission := 3.2e-11;
volumetric_power / energy_per_fission'
[]
[burnup_func] # Burnup func is needed because BurnupAux doesn't currentl export an ADMaterialProperty.
type = PiecewiseLinear
x = '0 1e5 70e6 70100000'
y = '0 0 0.122 0.122'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 70100000'
y = '0.151e6 0.151e6' # unknown, Na coolant
[]
[coolant_inlet_temp]
type = PiecewiseLinear
x = '0 1e5 70e6 70100000'
y = '350 644 644 350'
[]
[coolant_outlet_temp]
type = PiecewiseLinear
x = '0 1e5 70e6 70100000'
y = '350 746 746 350'
[]
[coolant_wall_temp]
type = ParsedFunction
symbol_values = 'coolant_inlet_temp coolant_outlet_temp'
symbol_names = 'coolant_inlet_temp coolant_outlet_temp'
expression = 'rod_length := 343e-3 + 43.5e-3 + 2 * 8e-3;
delta_temp := coolant_outlet_temp - coolant_inlet_temp;
interpolated_temp := coolant_inlet_temp + y * delta_temp / rod_length;
max( min( interpolated_temp, coolant_outlet_temp ), coolant_inlet_temp )'
[]
[radial_heat_flux]
type = ParsedFunction
symbol_values = 'coolant_wall_temp power_history axial_peaking_factors'
symbol_names = 'coolant_wall_temp power_history axial_peaking_factors'
expression = 'linear_heating_rate := axial_peaking_factors * power_history;
pellet_radius := 4.301e-3;
pellet_circumference := 3.14159 * pellet_radius * 2;
linear_heating_rate / pellet_circumference'
[]
[clad_inner_wall_temp]
type = ParsedFunction
symbol_values = 'radial_heat_flux coolant_wall_temp'
symbol_names = 'radial_heat_flux coolant_wall_temp'
expression = 'conductivity_316ss := 22;
clad_thickness := 0.51e-3;
coolant_wall_temp + radial_heat_flux / conductivity_316ss * clad_thickness'
[]
[pellet_wall_temp]
type = ParsedFunction
symbol_values = 'radial_heat_flux coolant_wall_temp clad_inner_wall_temp'
symbol_names = 'radial_heat_flux coolant_wall_temp clad_inner_wall_temp'
expression = 'conductivity_gap := 1;
gap_thickness := 0.145e-3;
clad_inner_wall_temp + radial_heat_flux / conductivity_gap * gap_thickness'
[]
[contact_pressure_func]
type = ConstantFunction
value = 12e6
[]
[plenum_pressure]
type = ConstantFunction
value = 12.4e6 # initial fill
[]
[porosity_ramp]
type = PiecewiseLinear
x = '0 1e5 70e6 70100000'
y = '0.14 0.14 0.145 0.145' # Pellets start at 88.1% TD, but no data on final porosity.
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet
strain = SMALL
incremental = true
extra_vector_tags = 'ref'
eigenstrain_names = 'fuel_thermal_expansion fuel_swelling'
use_automatic_differentiation = true
[]
[clad]
block = clad
strain = SMALL
incremental = true
extra_vector_tags = 'ref'
use_automatic_differentiation = true
[]
[]
[Kernels]
[gravity]
type = ADGravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = ADHeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = ADFissionRateHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[contact_pressure_aux]
type = FunctionAux
variable = contact_pressure
function = contact_pressure_func
[]
[layered_side_contact_pressure]
type = SpatialUserObjectAux
variable = layered_side_contact_pressure
user_object = layered_side_contact_pressure
block = pellet
[]
[pellet_wall_temp]
type = FunctionAux
variable = pellet_wall_temp
function = pellet_wall_temp
[]
[radial_heat_flux]
type = FunctionAux
variable = radial_heat_flux
function = radial_heat_flux
[]
[clad_inner_wall_temp]
type = FunctionAux
variable = clad_inner_wall_temp
function = clad_inner_wall_temp
[]
[volumetric_strain]
type = ADRankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[plenumPressure]
boundary = 9
function = plenum_pressure
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = '1 2 3'
function = coolant_wall_temp
variable = temp
[]
[pellet_to_clad_cooling]
type = FunctionDirichletBC
boundary = 10
function = pellet_wall_temp
variable = temp
[]
[]
[Materials]
[fission]
type = ADGenericFunctionMaterial
prop_names = fission_rate
prop_values = fission_func
outputs = all
[]
[burnup]
type = ADGenericFunctionMaterial
block = pellet
prop_names = burnup
prop_values = burnup_func
outputs = all
[]
[fuel_thermal]
block = pellet
type = ADMCThermal
temperature = temp
porosity = porosity
X_Pu = 0.0
outputs = all
[]
[fuel_porosity]
block = pellet
type = ADGenericFunctionMaterial
prop_names = porosity
prop_values = porosity_ramp
outputs = all
[]
[fuel_elasticity_tensor]
block = pellet
type = ADMCElasticityTensor
temperature = temp
porosity = porosity
output_properties = 'youngs_modulus poissons_ratio'
outputs = all
[]
[fuel_thermal_expansion]
block = pellet
type = ADMCThermalExpansionEigenstrain
eigenstrain_name = fuel_thermal_expansion
stress_free_temperature = 350
temperature = temp
[]
[fuel_creep]
block = pellet
type = ADMCCreepUpdate
temperature = temp
fission_rate = fission_rate
outputs = all
[]
[fuel_swelling]
block = pellet
type = ADMCVolumetricSwellingEigenstrain
eigenstrain_name = fuel_swelling
temperature = temp
porosity = porosity
contact_pressure = layered_side_contact_pressure
burnup = burnup
outputs = all
[]
[fuel_radial_return_stress]
block = pellet
type = ADComputeMultipleInelasticStress
inelastic_models = 'fuel_creep'
[]
[fuel_density]
block = pellet
type = ADStrainAdjustedDensity
strain_free_density = ${initial_fuel_density}
[]
[clad_elasticity_tensor]
block = clad
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 190e9
poissons_ratio = 0.265
[]
[clad_stress]
block = clad
type = ADComputeLinearElasticStress
[]
[clad_thermal]
block = clad
type = ADSS316Thermal
temperature = temp
[]
[clad_density]
block = clad
type = ADStrainAdjustedDensity
strain_free_density = 8000
[]
[]
[UserObjects]
[layered_side_contact_pressure]
# This reads the contact pressure at the pellet OD and propagates it inward so that it can
# be used in ADMCVolumetricSwellingEigenstrain for inner elements as well.
type = LayeredSideAverage
direction = y
num_layers = 100
variable = contact_pressure
execute_on = linear
boundary = 10
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 70100000
dtmin = 1
dtmax = 2e6
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
time_t = ' 0 1e5 70e6 70100000'
time_dt = '1e2 1e2 1e2 1e2'
optimal_iterations = 10
growth_factor = 2
cutback_factor = 0.5
iteration_window = 1
linear_iteration_ratio = 100
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[burnup]
block = pellet
type = ADElementAverageMaterialProperty
mat_prop = burnup
[]
[FCT]
type = NodalExtremeValue
boundary = 12
variable = temp
execute_on = 'initial timestep_end'
[]
[volumetric_strain]
type = ElementAverageValue
block = pellet
variable = volumetric_strain
[]
[pellet_outer_disp_x]
type = NodalExtremeValue
boundary = 10
variable = disp_x
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
color = true
exodus = true
perf_graph = true
csv = true
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
hide = 'num_nonlin_it num_lin_it _dt'
[]
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM156/BFM156.i)
################################################################################
#
# Description: Calvert Cliffs BFM156
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM156_power.csv
# axial peaking factor file BFM156_axial_peaking.csv
# flux boundary condition file BFM156_fast_flux.csv
#
################################################################################
initial_fuel_density = 10411.07
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.34015
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM156_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM156_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 177406235 177406595'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 177406235 177406595'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM156_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
# [Dampers]
# [limitT]
# type = MaxIncrement
# variable = temp
# max_increment = 50
# []
# []
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 177406595
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(examples/constituent_redistribution/2d_composition.i)
# This example demonstrates how to loosely couple the metallic fuel constituent
# redistribution model provided by ADUPuZrPhaseLookup and ADUPuZrMobility to a
# thermo solve using the MultiApps system. This file contains the composition
# solve, which is executed as a SubApp by 2d_thermo.i.
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 3.810e-04
pellet_outer_radius = 2.192e-03
pellet_height = 3.428e-01
clad_top_gap_height = 2.714e-01
clad_gap_width = 3.480e-04
bottom_clad_height = 2.240e-03
top_clad_height = 2.240e-03
clad_bot_gap_height = 3.100e-04
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 20
ny_p = 260
include_clad = false
pellet_quantity = 1
elem_type = QUAD8
[]
[]
[Variables]
[X_Zr]
initial_condition = 0.225
[]
[w_Zr]
[]
[]
[Kernels]
# Constituent redistribution using reverse Cahn-Hilliard
[X_Zr_dt]
type = ADCoupledTimeDerivative
variable = w_Zr
v = X_Zr
[]
[X_Zr_chemical]
type = ADSplitCHWRes
variable = w_Zr
mob_name = m_c_active
[]
[X_Zr_thermal]
type = ADCHSoretMobility
variable = w_Zr
T = T
mobility = m_t_active
[]
[w_Zr_bulk_int]
type = ADSplitCHParsed
variable = X_Zr
w = w_Zr
f_name = F
kappa_name = 5e-5
[]
[]
[AuxVariables]
[X_Pu]
[]
[X_Zr_ref]
[InitialCondition]
type = FunctionIC
function = f_X_Zr_ref
[]
[]
[T]
order = SECOND
family = LAGRANGE
[]
[]
[Functions]
[f_alpha]
type = PiecewiseMultilinear
data_file = lookup_tables/alpha_frac.txt
[]
[f_beta]
type = PiecewiseMultilinear
data_file = lookup_tables/beta_frac.txt
[]
[f_gamma]
type = PiecewiseMultilinear
data_file = lookup_tables/gamma_frac.txt
[]
[f_delta]
type = PiecewiseMultilinear
data_file = lookup_tables/delta_frac.txt
[]
[f_zeta]
type = PiecewiseMultilinear
data_file = lookup_tables/zeta_frac.txt
[]
[f_X_Zr_eq_alpha]
type = PiecewiseMultilinear
data_file = lookup_tables/zr_in_alpha.txt
[]
[f_X_Zr_eq_beta]
type = PiecewiseMultilinear
data_file = lookup_tables/zr_in_beta.txt
[]
[f_X_Zr_eq_gamma]
type = PiecewiseMultilinear
data_file = lookup_tables/zr_in_gamma.txt
[]
[f_X_Zr_eq_delta]
type = PiecewiseMultilinear
data_file = lookup_tables/zr_in_delta.txt
[]
[f_X_Zr_eq_zeta]
type = PiecewiseMultilinear
data_file = lookup_tables/zr_in_zeta.txt
[]
[f_X_Pu_eq_alpha]
type = PiecewiseMultilinear
data_file = lookup_tables/pu_in_alpha.txt
[]
[f_X_Pu_eq_beta]
type = PiecewiseMultilinear
data_file = lookup_tables/pu_in_beta.txt
[]
[f_X_Pu_eq_gamma]
type = PiecewiseMultilinear
data_file = lookup_tables/pu_in_gamma.txt
[]
[f_X_Pu_eq_delta]
type = PiecewiseMultilinear
data_file = lookup_tables/pu_in_delta.txt
[]
[f_X_Pu_eq_zeta]
type = PiecewiseMultilinear
data_file = lookup_tables/pu_in_zeta.txt
[]
[f_mu_alpha]
type = PiecewiseMultilinear
data_file = lookup_tables/mu_zr_alpha.txt
[]
[f_mu_beta]
type = PiecewiseMultilinear
data_file = lookup_tables/mu_zr_beta.txt
[]
[f_mu_gamma]
type = PiecewiseMultilinear
data_file = lookup_tables/mu_zr_gamma.txt
[]
[f_mu_delta]
type = PiecewiseMultilinear
data_file = lookup_tables/mu_zr_delta.txt
[]
[f_mu_zeta]
type = PiecewiseMultilinear
data_file = lookup_tables/mu_zr_zeta.txt
[]
[f_X_Zr_ref]
type = SplineFunction
x = '0.000e+00 1.099e-05 2.197e-05 3.296e-05 4.394e-05 5.493e-05 6.591e-05 7.690e-05 8.788e-05 9.887e-05 1.099e-04 1.208e-04 1.318e-04 1.428e-04 1.538e-04 1.648e-04 1.758e-04 1.867e-04 1.977e-04 2.087e-04 2.197e-04 2.307e-04 2.417e-04 2.527e-04 2.636e-04 2.746e-04 2.856e-04 2.966e-04 3.076e-04 3.186e-04 3.296e-04 3.405e-04 3.515e-04 3.625e-04 3.735e-04 3.845e-04 3.955e-04 4.064e-04 4.174e-04 4.284e-04 4.394e-04 4.504e-04 4.614e-04 4.724e-04 4.833e-04 4.943e-04 5.053e-04 5.163e-04 5.273e-04 5.383e-04 5.493e-04 5.602e-04 5.712e-04 5.822e-04 5.932e-04 6.042e-04 6.152e-04 6.261e-04 6.371e-04 6.481e-04 6.591e-04 6.701e-04 6.811e-04 6.921e-04 7.030e-04 7.140e-04 7.250e-04 7.360e-04 7.470e-04 7.580e-04 7.690e-04 7.799e-04 7.909e-04 8.019e-04 8.129e-04 8.239e-04 8.349e-04 8.458e-04 8.568e-04 8.678e-04 8.788e-04 8.898e-04 9.008e-04 9.118e-04 9.227e-04 9.337e-04 9.447e-04 9.557e-04 9.667e-04 9.777e-04 9.887e-04 9.996e-04 1.011e-03 1.022e-03 1.033e-03 1.044e-03 1.055e-03 1.066e-03 1.077e-03 1.088e-03 1.099e-03 1.109e-03 1.120e-03 1.131e-03 1.142e-03 1.153e-03 1.164e-03 1.175e-03 1.186e-03 1.197e-03 1.208e-03 1.219e-03 1.230e-03 1.241e-03 1.252e-03 1.263e-03 1.274e-03 1.285e-03 1.296e-03 1.307e-03 1.318e-03 1.329e-03 1.340e-03 1.351e-03 1.362e-03 1.373e-03 1.384e-03 1.395e-03 1.406e-03 1.417e-03 1.428e-03 1.439e-03 1.450e-03 1.461e-03 1.472e-03 1.483e-03 1.494e-03 1.505e-03 1.516e-03 1.527e-03 1.538e-03 1.549e-03 1.560e-03 1.571e-03 1.582e-03 1.593e-03 1.604e-03 1.615e-03 1.626e-03 1.637e-03 1.648e-03 1.659e-03 1.670e-03 1.681e-03 1.692e-03 1.703e-03 1.714e-03 1.725e-03 1.736e-03 1.747e-03 1.758e-03 1.769e-03 1.780e-03 1.791e-03 1.802e-03 1.813e-03 1.824e-03 1.834e-03 1.845e-03 1.856e-03 1.867e-03 1.878e-03 1.889e-03 1.900e-03 1.911e-03 1.922e-03 1.933e-03 1.944e-03 1.955e-03 1.966e-03 1.977e-03 1.988e-03 1.999e-03 2.010e-03 2.021e-03 2.032e-03 2.043e-03 2.054e-03 2.065e-03 2.076e-03 2.087e-03 2.098e-03 2.109e-03 2.120e-03 2.131e-03 2.142e-03 2.153e-03 2.164e-03 2.175e-03 2.186e-03'
y = '3.885e-01 3.885e-01 3.734e-01 3.590e-01 3.453e-01 3.801e-01 4.422e-01 4.596e-01 4.215e-01 3.965e-01 3.933e-01 4.167e-01 4.431e-01 4.037e-01 4.095e-01 4.104e-01 4.010e-01 3.799e-01 3.995e-01 4.261e-01 4.421e-01 4.450e-01 4.256e-01 4.510e-01 5.115e-01 4.718e-01 4.138e-01 4.158e-01 4.454e-01 3.952e-01 2.708e-01 1.811e-01 2.932e-01 3.956e-01 4.010e-01 4.438e-01 4.706e-01 4.574e-01 3.943e-01 3.271e-01 3.642e-01 4.024e-01 3.875e-01 3.970e-01 4.123e-01 4.326e-01 4.353e-01 4.202e-01 3.674e-01 3.546e-01 3.746e-01 4.111e-01 4.174e-01 3.858e-01 3.380e-01 3.172e-01 3.418e-01 3.884e-01 4.080e-01 3.816e-01 3.655e-01 3.654e-01 3.654e-01 3.677e-01 3.751e-01 3.649e-01 3.557e-01 3.597e-01 3.655e-01 3.656e-01 3.542e-01 3.659e-01 3.575e-01 3.202e-01 2.908e-01 3.047e-01 3.069e-01 3.287e-01 3.847e-01 3.949e-01 3.514e-01 3.297e-01 3.263e-01 3.546e-01 3.581e-01 3.608e-01 3.121e-01 2.694e-01 2.931e-01 3.235e-01 2.970e-01 2.552e-01 2.159e-01 1.917e-01 2.040e-01 2.168e-01 1.825e-01 1.284e-01 7.370e-02 4.785e-02 1.842e-02 7.600e-03 7.420e-03 1.751e-02 6.518e-02 7.871e-02 7.470e-02 6.046e-02 1.203e-01 2.068e-01 1.903e-01 8.591e-02 4.031e-02 2.911e-02 5.307e-02 8.001e-02 1.061e-01 1.072e-01 7.464e-02 4.104e-02 3.966e-02 7.244e-02 8.140e-02 7.180e-02 9.492e-02 1.281e-01 1.213e-01 1.188e-01 1.617e-01 2.258e-01 2.321e-01 1.980e-01 1.650e-01 1.621e-01 2.045e-01 2.132e-01 1.669e-01 1.865e-01 2.431e-01 2.144e-01 1.597e-01 1.821e-01 1.962e-01 1.905e-01 2.026e-01 2.446e-01 2.788e-01 2.705e-01 2.518e-01 2.454e-01 2.472e-01 2.465e-01 2.963e-01 3.190e-01 2.726e-01 2.280e-01 2.382e-01 2.713e-01 2.889e-01 2.408e-01 2.094e-01 2.454e-01 2.894e-01 2.808e-01 2.695e-01 2.769e-01 2.813e-01 2.802e-01 2.810e-01 3.856e-01 4.359e-01 3.762e-01 4.293e-01 4.049e-01 3.155e-01 2.501e-01 2.662e-01 3.887e-01 4.248e-01 3.808e-01 3.120e-01 2.897e-01 2.816e-01 2.762e-01 2.350e-01 2.032e-01 2.147e-01 2.246e-01 3.273e-01 3.938e-01 3.301e-01 2.641e-01 2.351e-01 2.482e-01 2.716e-01 2.403e-01 2.083e-01 1.802e-01 1.772e-01 2.982e-01'
[]
[]
[Materials]
# Thermodynamic parameters
[phases]
type = ADUPuZrPhaseLookup
phase_function_names = 'f_alpha f_beta f_gamma f_delta f_zeta'
x_zr_eq_function_names = 'f_X_Zr_eq_alpha f_X_Zr_eq_beta f_X_Zr_eq_gamma f_X_Zr_eq_delta f_X_Zr_eq_zeta'
x_pu_eq_function_names = 'f_X_Pu_eq_alpha f_X_Pu_eq_beta f_X_Pu_eq_gamma f_X_Pu_eq_delta f_X_Pu_eq_zeta'
mu_function_names = 'f_mu_alpha f_mu_beta f_mu_gamma f_mu_delta f_mu_zeta'
temperature = T
x_pu = X_Pu
x_zr = X_Zr
calculate_derivatives = true # can be set to false when using PJFNK
outputs = 'all'
[]
[F]
# This material renames the chemical potential to accomodate the naming
# scheme used in ADSplitCHParsed.
type = ADParsedMaterial
property_name = 'dF/dX_Zr'
material_property_names = mu_active
expression = mu_active
[]
# Kinetic parameters
[mobilities]
type = ADUPuZrMobility
temperature = T
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
automatic_scaling = true
compute_scaling_once = false
scaling_group_variables = 'X_Zr w_Zr'
scheme = bdf2
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = none
l_max_its = 15
l_tol = 1e-3
nl_max_its = 15
nl_rel_tol = 1e-6
nl_abs_tol = 1e-6
dtmin = 10
dtmax = 1e6
end_time = 24969600
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e5
iteration_window = 2
optimal_iterations = 9
growth_factor = 1.1
cutback_factor = 0.5
[]
[]
[VectorPostprocessors]
[profiles]
type = LineValueSampler
variable = 'T X_Pu X_Zr X_Zr_ref alpha beta gamma delta zeta'
sort_by = x
start_point = '0 2.689e-01 0'
end_point = '2.192e-03 2.689e-01 0'
num_points = 21
[]
[]
[Outputs]
perf_graph = true
exodus = true
[console]
type = Console
[]
[csv]
type = CSV
execute_vector_postprocessors_on = final
[]
[]
(assessment/LWR/validation/LOCA_ANL_cladding_burst_tests/analysis/OCL5_8/OCL5_8.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.270
pellet_outer_radius = 4.78e-3
clad_bot_gap_height = 0.001
clad_top_gap_height = 0.013
clad_thickness = 0.71e-3
clad_gap_width = 0.1e-3
pellet_mesh_density = coarse
clad_mesh_density = coarse
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
initial_condition = 300.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0 496.02 520.74 528.12 545.94 551.28 671.52 885.3 1195.74 1410.36 1657.86 1680 1690 1700 1710 1720 1730 1740 1750 1760 1770 1780 1790 1800 1810 1820 1830 1840 1848'
y = '300 300 405.465 482.048 583.351 632.287 634.297 632.825 630.378 631.059 632.59 633 683 733 783 833 883 933 983 1033 1083 1133 1183 1233 1283 1333 1383 1433 1477'
[]
[temperature_profile]
type = PiecewiseBilinear
data_file = 'temp_profile.csv'
axis = 1
[]
[cladding_temperature]
type = CompositeFunction
functions = 'temperature_func temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[burst]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
primary = 5
secondary = 10
variable = temperature
gap_conductivity = 0.15 # k of He per Netzsch
[]
[]
[BCs]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temperature
boundary = '2'
function = cladding_temperature
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[outer_pressure]
boundary = '1 2 3'
factor = 101325
[]
[inner_pressure]
boundary = '4 5 6'
factor = 8.28e6
[]
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Materials]
[fuel_thermal]
type = HeatConductionMaterial
block = pellet
thermal_conductivity = 3.5
specific_heat = 330.0
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 10980.0 #perfectly dense UO2
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_loca_creep_begin = 501
temperature_standard_thermal_creep_end = 500
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-04
nl_abs_tol = 1.0e-08
start_time = 0
n_startup_steps = 1
end_time = 1800.0
dtmax = 100
dtmin = 0.0001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10.0
time_dt = '100 10'
time_t = '10 400'
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'max_clad_temp max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK8/FK08.i)
# This file was created using BIF with the following inputs:
# FK06/FK06.var - md5sum: 5a60c05af67ba840a89caacf70b852e2
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy '
'elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy '
'strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz '
'stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz '
'creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
initial_gas_types = 'He Ar'
initial_fractions = '0.25 0.75'
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.1e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.30e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage '
'peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_G/x441_grp_G.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/metallic_fuel_coolant_wastage/cc_wastage_ht9_eff_full_pin.i)
# This test is to verify the calculation for HT9 Coolant Wastage in a simplified pin mesh (non-AD)
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
X_Zr = 0.225
X_Pu = 0.0
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.381e-03
pellet_outer_radius = 2.158e-03
pellet_height = 342.5e-3
clad_top_gap_height = 479.5e-3
clad_gap_width = 0.382e-03
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_bot_gap_height = 0.31e-3
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 1
ny_p = 1
nx_c = 1
ny_c = 20
ny_cu = 1
ny_cl = 1
pellet_quantity = 1
elem_type = QUAD4
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1E6 1E7'
y = '0 2E4 3E4'
[]
[pwr_axial_peaking_factors]
type = ConstantFunction
value = 1.0
[]
[pwr_cdf]
type = PiecewiseLinear
axis = y
x = '0 2.55e-3 342.5e-3'
y = '0 0 1'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie_f]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = pellet
density_name = 16000
[]
[heat_ie_c]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = clad
density_name = 7890
[]
[heat_source]
type = FissionRateHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = 1e-6
emissivity_primary = 0
emissivity_secondary = 0
[]
[]
[FluidProperties]
[sodium_uo]
type = SodiumProperties
[]
[]
[BCs]
[convection]
type = ConvectiveHeatFluxBC
variable = temp
boundary = 2
T_infinity = coolant_temperature
heat_transfer_coefficient = coolant_channel_htc
[]
[]
[Materials]
[coolant]
type = SodiumCoolantChannelMaterial
inlet_temperature_function = 648.0
rod_linear_power = power_history
inlet_massflux_function = 2300
axial_power_profile_cdf = pwr_cdf
pellet_height = 3.425e-01
cladding_radius = 2.921e-03
boundary = clad_outside_right
wire_wrap_diameter = 1.067e-03
temperature = temp
sodium_user_object = sodium_uo
htc_model = BGF
update_temperature = true
pin_location = interior
peclet_limit_behavior = error
outputs = all
[]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = pwr_axial_peaking_factors
pellet_radius = 2.158e-3
outputs = all
[]
[burnup]
type = UPuZrBurnup
density = 16000
outputs = all
[]
[cc_wastage_thickness]
type = MetallicFuelCoolantWastage
clad_material = HT9
use_effective_method = true
temperature = temp
boundary = 2
outputs = all
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
spheat_model = savage
thcond_model = lanl
porosity = 0
temperature = temp
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50
variable = temp
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 100
l_tol = 1e-3
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
end_time = 1E7
dt = 5E5
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[peak_clad_outer_temp]
type = NodalExtremeValue
variable = temp
value_type = max
boundary = 2
outputs = 'console'
[]
[time_max_clad_outer_temp]
type = TimeExtremeValue
postprocessor = peak_clad_outer_temp
outputs = 'console'
[]
[max_wastagethickness]
type = ElementExtremeValue
value_type = max
variable = cc_wastage_thickness
outputs = 'console'
[]
[]
[VectorPostprocessors]
[cc_wastage_profile]
type = SideValueSampler
boundary = 2
sort_by = y
variable = cc_wastage_thickness
[]
[]
[Outputs]
perf_graph = true
console = true
[csv_vec]
type = CSV
file_base = cc_wastage_ht9_eff_full_pin_profile
execute_on = final
[]
[]
(assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2a/27_2a.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11 # J/fission (200 MeV)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 9.5e-4
pellet_mesh_density = customize
ny_p = 8
nx_c = 4
nx_p = 12
pellet_outer_radius = 0.005305
ny_cu = 3
ny_c = 8
clad_bot_gap_height = 1e-3
pellet_quantity = 1
pellet_height = 0.0127
ny_cl = 3
plenum_fuel_ratio = 0.45
clad_gap_width = 9.5e-5
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[grain_radius]
block = 3
initial_condition = 7.5e-6
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
x = '0 100'
y = '0 15000'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0'
y = '0.02914 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = 3
burnup_function = burnup
[]
[]
# Note: The U235 should be 13% but the model does not currently work above 12%
[Burnup]
[burnup]
block = 3
order = CONSTANT
family = MONOMIAL
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
a_upper = 0.01594
a_lower = 0.00324
fuel_inner_radius = 0.0
fuel_outer_radius = 0.005305
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.12 0.88 0 0 0 0'
RPF = RPF
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = 3
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
execute_on = timestep_begin
factor = 1.6e12 # (n/m2-s per W/m) used HALDEN fast flux
block = 1
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = 1
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = 1
variable = creep_strain_mag
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = penalty
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
roughness_coef = 3.2
roughness_primary = 2.0e-6
roughness_secondary = 1.0e-6
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[clad_bc]
type = DirichletBC
variable = temp
boundary = '1 2 3'
value = 516.2 # Clad wall temp = 240+.4162*(LHR)^.75, where temp is C and LHR is kW/m
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.447e6 # Halden coolant pressure
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 5.0e5 # FUMEXII => 500 kPa pressure (He fill)
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
diameter = 10.61e-3
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
diametral_gap =0.19e-3
relocation_activation1 = 5000
burnup_relocation_stop = 0.044
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
strain_free_density = ${initial_fuel_density}
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
dtmax = 1e6
dtmin = 1
end_time = 4.74e8
[TimeSteppers]
[ts1]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 12
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
outputs = exodus
[]
[intg_flux_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[intg_flux_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[fuel_center_temperature]
type = NodalVariableValue
nodeid = 467 # GlobalNodeID 468
variable = temp
execute_on = 'initial timestep_end'
[]
[average_fissionrate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = '3'
[]
[]
[VectorPostprocessors]
[True]
type = RadialProfile
quantity = 'N235 N236 N238 N239 N240 N241 N242 RPF'
height =0.00635
burnup_function = burnup
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fuel_center_temperature rod_total_power'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2b/27_2b.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density} # 95% TD assuming TD=10980
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 9.5e-4
pellet_mesh_density = customize
ny_p = 8
nx_c = 4
nx_p = 12
pellet_outer_radius = 0.005305
ny_cu = 3
ny_c = 8
clad_bot_gap_height = 1e-3
pellet_quantity = 1
pellet_height = 0.0127
ny_cl = 3
plenum_fuel_ratio = 0.45
clad_gap_width = 9.5e-5
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[disp_x]
initial_condition = 0.0
[]
[disp_y]
initial_condition = 0.0
[]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[grain_radius]
block = pellet
initial_condition = 7.5e-6
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseLinear
x = '0 43200 5e8'
y = '0 15000 15000'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellet]
block = pellet
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[clad]
block = clad
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
# Note: The U235 should be 13% but the model does not currently work above 12%
[Burnup]
[burnup]
block = 3
order = CONSTANT
family = MONOMIAL
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.12 0.88 0 0 0 0'
RPF = RPF
fuel_volume_ratio = 1
fuel_pin_geometry = fuel_pin_geometry
[]
[]
[AuxKernels]
[GrainRadiusAux]
block = pellet
execute_on = linear
temperature = temp
type = GrainRadiusAux
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
execute_on = timestep_begin
factor = 1.6e12 # (n/m2-s per W/m) used HALDEN fast flux
block = clad
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = clad
variable = creep_strain_mag
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
roughness_coef = 3.2
roughness_primary = 2.0e-6
roughness_secondary = 1.0e-6
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[clad_bc]
type = DirichletBC
variable = temp
boundary = '1 2 3'
value = 516.2 # Clad wall temp = 240+.4162*(LHR)^.75, where temp is C and LHR is kW/m
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.447e6 # Halden coolant pressure
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 5.0e5 # FUMEXII => 500 kPa pressure (He fill)
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
temperature = temp
burnup_function = burnup
initial_porosity = 0.05
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.065
relocation_activation1 = 5000
fuel_pin_geometry = fuel_pin_geometry
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
creeprate_scale_factor = 1
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
dtmax = 1e6
dtmin = 1
end_time = 409638200
[TimeSteppers]
[ts1]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 12
iteration_window = 2
linear_iteration_ratio = 100
[]
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
[]
[intg_flux_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[intg_flux_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[fuel_center_temperature]
type = NodalVariableValue
nodeid = 467 # GlobalNodeID 468
variable = temp
[]
[average_fissionrate]
type = ElementAverageValue
block = pellet
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 0.0127 # rod height
[]
[]
[VectorPostprocessors]
[True]
type = RadialProfile
quantity = 'N235 N236 N238 N239 N240 N241 N242 RPF'
height =0.00635
burnup_function = burnup
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = pellet
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_total_power'
execute_on = 'FINAL'
[]
[checkpoint]
type = Checkpoint
num_files = 2
file_base = recover_files
sync_times = '409638200'
sync_only = true
[]
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-1kW_action.i)
################################################################################
#
# Description: LOCA MT-4 Test with constant power level of 1.1 kW/m
#
#
# External files:
# axial peaking factor file MT4_axial_peaking.csv
#
################################################################################
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
temperature = temperature
[]
[Problem]
type = ReferenceResidualProblem
group_variables = 'disp_x disp_y'
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 6.1e-4
pellet_mesh_density = customize
ny_p = 100
nx_c = 4
nx_p = 12
pellet_outer_radius = .00413
ny_cu = 3
ny_c = 100
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.66
ny_cl = 3
clad_top_gap_height = 0.18613
clad_gap_width = 7.5e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 253
[]
[AuxVariables]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[hmode]
order = CONSTANT
family = MONOMIAL
[]
[htype]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 110'
y = '1.1e3 1.1e3'
[]
[hmode_function]
type = PiecewiseConstant
x = '0 57 110'
y = '9 10 10'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = MT4_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '0 110'
y = '0.28 0.28'
scale_factor = 1e6
[]
[temp_func]
type = ParsedFunction
expression = '-24.096*y*y+152.47*y+437.81'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors' # W/m
[]
[]
[AuxKernels]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = hmode
boundary = 2
[]
[htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = htype
boundary = 2
[]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
block = clad
execute_on = timestep_end
[]
[burst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
# TODO: Have StandardLWRFuelRodOutputs create this when the feature in issue #1054 is
# developed.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
normalize_penalty = true
model = frictionless
# model = coulomb
formulation = penalty
# friction_coefficient = 1.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.0 # Pa
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 9.3e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temperature
inlet_temperature = 311 # K
inlet_pressure = 0.28e6 # Pa
# inlet_massflux = massfluxfunc # kg/m^2-sec
rod_diameter = 0.00963 # m
rod_pitch = 1.275e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
heat_transfer_mode = hmode_function
heat_transfer_coefficient = 0.0000001 #W/m^2-K
# heat_transfer_mode = 10
htc_correlation_type = 1
flooding_time = 57.0
flooding_rate = 0.127 # m/s
initial_temperature = 1140 # K
initial_power = 1.628 # kW/m
blockage_ratio = 0.0 #
fuel_stack_length = 3.66 # m
reflooding_model = 1
compute_enthalpy = false
[]
[]
[NuclearMaterials]
fission_operation = LOCA
add_variables = true
physics = 'Mechanics Thermal'
temperature_function = 'temp_func'
stress_free_temperature = temperature
extra_vector_tags = 'ref'
strain = FINITE
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
elastic_strain_yy strain_xx strain_yy strain_zz hoop_stress'
[UO2]
[pellet]
block = pellet
incremental = true
additional_generate_output = 'hydrostatic_stress'
uo2_models = 'Burnup Elastic Swelling '
automatic_eigenstrain_names = true
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
isotopes = 'U235 U238'
isotope_fractions = '0.0293 0.9707'
density = 10431 #
initial_grain_radius = 7.8e-6
[]
[]
[ZirconiumAlloy]
[clad]
block = clad
incremental = true
additional_generate_output = 'creep_strain_xx creep_strain_yy
creep_strain_xy creep_strain_zz elastic_strain_xx elastic_strain_zz hoop_creep_strain'
automatic_eigenstrain_names = true
failure_criterion = combined_overstress_and_plastic_instability
cladding_models = 'Elastic Creep ThermalExpansion ZrPhase
ZryCladdingFailure'
[]
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0.0
end_time = 110
dtmax = 5
dtmin = 0.00001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 0.01
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temperature
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[max_betaph_fract]
type = ElementExtremeValue
block = clad
value_type = max
variable = fract_beta_phase
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
execute_on = timestep_end
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
fission_rate = fission_rate
variable = temperature
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.66 # rod height
execute_on = timestep_end
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_creep_rate]
type = ElementExtremeValue
block = clad
value_type = max
variable = creep_rate_aux
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
temperature = temperature
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 40
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temperature'
show_var_residual_norms = true
[]
(test/tests/zry_oxidation_cladding/zryoxidation_pingeo.i)
# This test demonstrates the usage of the model for cladding oxidation from
# normal operating to high temperature (accident) conditions, through the
# epri_kwu_ce, Leistikow, and Prater relations.
#
# The purpose of this test is to run zryoxidation.i while using FuelPinGeometry
# and then exodiff against the non-FuelPinGeometry version
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
include_fuel = false
pellet_quantity = 1
pellet_height = 0.011143
pellet_outer_radius = 4.57e-3
clad_mesh_density = coarse
clad_gap_width = 70.0e-6
clad_thickness = 0.735e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.5e-3
top_clad_height = 2.5e-3
clad_top_gap_height = 5.0e-3
elem_type = QUAD4
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
x = '0.0 100000000.0 100000010.0 100000100.0 100000110.0 100000200.0 100000210.0 100000300.0'
y = '600.0 600.0 1100.0 1100.0 1850.0 1850.0 1950.0 1950.0 '
[]
[FNFlux_func]
type = PiecewiseLinear
x = '0.0 100000300.0'
y = '1.0e+17 1.0e+17 '
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 600.0
[]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[fast_neutron_flux]
order = FIRST
family = LAGRANGE
initial_condition = 1.0e+17
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxyconc2_scale] # Oxygen concentration in ZrO2 scale (kg/m**2)
order = CONSTANT
family = MONOMIAL
[]
[oxyconc2_metal] # Oxygen concentration in metal (kg/m**2)
order = CONSTANT
family = MONOMIAL
[]
[oxyconc2_total] # Total oxygen concentration (oxide + metal) (kg/m**2)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_metal] # Oxygen weight fraction in metal (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Total oxygen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[AuxKernels]
[fnflux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
function = FNFlux_func
execute_on = timestep_begin
[]
[scl_thickness]
type = MaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 1
[]
[oconc_scale]
type = MaterialRealAux
variable = oxyconc2_scale
property = gained_oxygen_concentration_scale
boundary = 1
[]
[oconc_metal]
type = MaterialRealAux
variable = oxyconc2_metal
property = gained_oxygen_concentration_metal_wall
boundary = 1
[]
[oconc_total]
type = MaterialRealAux
variable = oxyconc2_total
property = gained_oxygen_concentration_total
boundary = 1
[]
[ofract_metal]
type = MaterialRealAux
variable = oxywtfract_metal
property = current_oxygen_weight_frac_metal_wall
boundary = 1
[]
[ofract_total]
type = MaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 1
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = temp
function = Temp_func
boundary = 1
[]
[x_disp]
type = DirichletBC
variable = disp_x
value = 0
boundary = 1
[]
[y_disp]
type = DirichletBC
variable = disp_y
value = 0
boundary = 2
[]
[]
[Materials]
[elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[oxidation_zry]
type = ZryOxidation
boundary = 1
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
temperature = temp
fast_neutron_flux = fast_neutron_flux
fuel_pin_geometry = pin_geometry
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_tol = 1.0e-08
nl_abs_tol = 1.0e-08
nl_rel_tol = 1.0e-08
start_time = 0.0
num_steps = 5000
end_time = 100000300
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e+06
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
time_t = '0.0 100000000.0'
time_dt = '1.e+06 10.0 '
growth_factor = 1.0
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
[]
[temp]
type = NodalVariableValue
variable = temp
nodeid = 0
execute_on = 'initial timestep_end'
[]
[scale_thickness]
type = ElementalVariableValue
elementid = 0
variable = scale_thickness
[]
[oxyconc2_scale]
type = ElementalVariableValue
elementid = 0
variable = oxyconc2_scale
[]
[oxyconc2_metal]
type = ElementalVariableValue
elementid = 0
variable = oxyconc2_metal
[]
[oxyconc2_total]
type = ElementalVariableValue
elementid = 0
variable = oxyconc2_total
[]
[oxywtfract_metal]
type = ElementalVariableValue
elementid = 0
variable = oxywtfract_metal
[]
[oxywtfract_total]
type = ElementalVariableValue
elementid = 0
variable = oxywtfract_total
[]
[]
[Outputs]
file_base = zryoxidation_out
exodus = true
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
include_fuel = false
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_A/x441_leg_A.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_swelling'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = MaterialRealAux
variable = porosity
property = porosity
block = pellet
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrain
block = pellet
temperature = temp
# hydrostatic_stress = hydrostatic_stress
hydrostatic_stress = 1e6
eigenstrain_name = fuel_volumetric_swelling
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_legacy_swell
[out2]
type = CSV
file_base = x441_${group_name}_legacy_swell_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_legacy_swell_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_legacy_swell_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/LOCA_ANL_cladding_burst_tests/analysis/OCL11/OCL11.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.270
pellet_outer_radius = 4.78e-3
clad_bot_gap_height = 0.001
clad_top_gap_height = 0.013
clad_thickness = 0.71e-3
clad_gap_width = 0.1e-3
pellet_mesh_density = coarse
clad_mesh_density = coarse
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
initial_condition = 300.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0 496.02 520.74 528.12 545.94 551.28 671.52 885.3 1195.74 1410.36 1657.86 1680 1690 1700 1710 1720 1730 1740 1750 1760 1770 1780 1790 1800 1810 1820 1830 1840 1848'
y = '300 300 405.465 482.048 583.351 632.287 634.297 632.825 630.378 631.059 632.59 633 683 733 783 833 883 933 983 1033 1083 1133 1183 1233 1283 1333 1383 1433 1477'
[]
[temperature_profile]
type = PiecewiseBilinear
data_file = 'temp_profile.csv'
axis = 1
[]
[cladding_temperature]
type = CompositeFunction
functions = 'temperature_func temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[burst]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = clad
[]
[scl_thickness]
type = MaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = clad_outside_right
[]
[ofract_total]
type = MaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = clad_outside_right
[]
[ofgain_total]
type = MaterialRealAux
boundary = clad_outside_right
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
primary = 5
secondary = 10
variable = temperature
gap_conductivity = 0.15 # k of He per Netzsch
[]
[]
[BCs]
[clad_surface_temperature]
type = FunctionDirichletBC
variable = temperature
boundary = '2'
function = cladding_temperature
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[outer_pressure]
boundary = '1 2 3'
factor = 101325
[]
[inner_pressure]
boundary = '4 5 6'
factor = 8.28e6
[]
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.0
inlet_pressure = 101325
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 0.01118
rod_pitch = 1.26e-02 # default
oxide_thickness = scale_thickness
[]
[]
[Materials]
[fuel_thermal]
type = HeatConductionMaterial
block = pellet
thermal_conductivity = 3.5
specific_heat = 330.0
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 10980.0 #perfectly dense UO2
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_loca_creep_begin = 501
temperature_standard_thermal_creep_end = 500
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ZryOxidation
boundary = clad_outside_right
temperature = temperature
clad_inner_radius = 4.88e-3 #checked
clad_outer_radius = 5.59e-3 #checked
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfgain_total
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-04
nl_abs_tol = 1.0e-08
start_time = 0
n_startup_steps = 1
end_time = 1800.0
dtmax = 100
dtmin = 0.0001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10.0
time_dt = '100 10'
time_t = '10 400'
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = clad
value_type = max
variable = fract_beta_phase
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[oxide_thickness]
type = ElementAverageValue
block = clad
variable = scale_thickness
execute_on = 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_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'max_clad_temp max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
[]
[]
(assessment/nitride/MTR/SNAP50/analysis/SNAP50_base.i)
fuel_radius = '${fparse fuel_diameter / 2}' # m
fuel_volume = '${fparse pi * fuel_radius^2 * fuel_height}' # m
spacer_height = '${fparse (pin_height - fuel_height) / 2 - cladding_bottom_top_plug_length}'
cladding_radial_gap = '${fparse cladding_outer_diameter / 2 - cladding_thickness - liner_thickness - fuel_radius}'
plenum_height = ${spacer_height}
gap_bottom_length = ${spacer_height}
R = 8.31446261815324
A_U = 0.238 # kg/mol
A_Pu = 0.239 # kg/mol
A_N = 0.014 # kg/mol
avo = 6.0221408e23 # atoms per mole
th_density = 14400 # kg/m3
initial_porosity = '${fparse 1.0 - fraction_th_density}'
density = '${fparse fraction_th_density * th_density}' # kg/m3
M_avg = '${fparse x_N * A_N + x_Pu * A_Pu + (1.0 - x_Pu) * A_U}' # kg / mol
atoms_heavy_metal_per_volume = '${fparse density / M_avg * avo}' # mol / m3
# Power history
avg_lin_power = '${fparse volumetric_power * pi * fuel_radius^2}' # W/m
time_end_ramp_up = '${fparse 5 * 3600}' # s, arbitrary 5 hour ramp
time_start_ramp_down = '${fparse time_end_ramp_up + run_time}' # s
time_end_ramp_down = '${fparse time_start_ramp_down + time_end_ramp_up}' # s
total_time = '${fparse time_end_ramp_down + 3600}' # s
[GlobalParams]
order = FIRST
energy_per_fission = 3.412e-11 # J/fission
displacements = 'disp_x disp_y'
value_range_behavior = IGNORE
min_damping = 1e-4
volumetric_locking_correction = true
absolute_value_vector_tags = ref
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
converge_on = 'disp_x disp_y temperature'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${cladding_thickness}
pellet_outer_radius = ${fuel_radius}
pellet_height = ${fuel_height}
clad_top_gap_height = ${plenum_height}
clad_gap_width = ${cladding_radial_gap}
top_clad_height = ${cladding_bottom_top_plug_length}
bottom_clad_height = ${cladding_bottom_top_plug_length}
clad_bot_gap_height = ${gap_bottom_length}
liner_thickness = ${liner_thickness}
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 10
ny_p = 100
nx_c = 4
ny_c = 100
ny_cu = 3
ny_cl = 3
nx_liner = 4
pellet_quantity = 1
elem_type = QUAD4
[]
patch_size = 30
patch_update_strategy = always
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 ${time_end_ramp_up} ${time_start_ramp_down} ${time_end_ramp_down}'
y = '0 ${avg_lin_power} ${avg_lin_power} 0'
[]
[axial_power_function] # estimated, actual peaking unknown
type = PowerPeakingFunction
fit = EBRII_ROW_3
pellet_length = '${fuel_height}'
pellet_y_start = ${fparse cladding_bottom_top_plug_length + gap_bottom_length}
[]
[coolant_wall_temperature]
type = ParsedFunction
expression = 'a := ${bottom_temperature} * (y - ${mid_midplane}) * (y - ${top_midplane}) / (${bottom_midplane} - ${mid_midplane}) / (${bottom_midplane} - ${top_midplane});
b := ${mid_temperature} * (y - ${bottom_midplane}) * (y - ${top_midplane}) / (${mid_midplane} - ${bottom_midplane}) / (${mid_midplane} - ${top_midplane});
c := ${top_temperature} * (y - ${bottom_midplane}) * (y - ${mid_midplane}) / (${top_midplane} - ${bottom_midplane}) / (${top_midplane} - ${mid_midplane});
full_temp := a + b + c;
if(t < ${time_end_ramp_up}, ${initial_temperature} + t * (full_temp - ${initial_temperature}) / (${time_end_ramp_up}), if(t < ${time_start_ramp_down}, full_temp, if(t < ${time_end_ramp_down}, full_temp + (t - ${time_start_ramp_down}) * (${initial_temperature} - full_temp) / (${time_end_ramp_down} - ${time_start_ramp_down}), ${initial_temperature})))'
[]
[gas_diffusivity_function]
# x corresponds to temperature [K] and y corresponds to fission rate [fsn/m3/s]
type = ParsedFunction
expression = 'kBT := 1.380649e-23 / 1.602176634e-19 * x;
D1 := ${xe_D10} * exp(-1.0 * ${xe_Q1} / kBT);
D2 := (y / 1e19)^0.5 * ${xe_D20} * exp(${xe_D2Q1} / kBT + ${xe_D2Q2} / kBT / kBT);
D3 := 1.85e-39 * y;
D1 * ${D1_xe_scalar} + D2 * ${D2_xe_scalar} + D3 * ${D3_xe_scalar}'
[]
[vacancy_diffusivity_function]
# x corresponds to temperature [K] and y corresponds to fission rate [fsn/m3/s]
type = ParsedFunction
expression = 'kBT := 1.380649e-23 / 1.602176634e-19 * x;
D1 := ${D10} * exp(-1.0 * ${Q1} / kBT);
D2 := (y / 1e19)^0.5 * ${D20} * exp(${D2Q1} / kBT + ${D2Q2} / kBT / kBT);
D2b := (y / 1e19)^0.5 * ${D2b0} * exp(${D2bQ1} / kBT + ${D2bQ2} / kBT / kBT);
D1 * ${D1_scalar} + (D2 + D2b) * ${D2_scalar}'
[]
[radial_power_function]
type = ParsedFunction
symbol_names = 'a b c d'
symbol_values = '0.88 -0.29 0.16 0.68'
expression = 'a*(x/${fuel_radius})^3 + b*(x/${fuel_radius})^2 + c*(x/${fuel_radius}) + d'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet
strain = FINITE
add_variables = true
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
eigenstrain_names = 'fuel_thermal_expansion solid_swelling_eigenstrain gaseous_swelling_eigenstrain'
temperature = temperature
use_automatic_differentiation = true
[]
[clad]
block = clad
strain = FINITE
add_variables = true
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
eigenstrain_names = 'clad_thermal_expansion'
temperature = temperature
use_automatic_differentiation = true
[]
[liner]
block = liner
strain = FINITE
add_variables = true
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
eigenstrain_names = 'liner_thermal_expansion'
temperature = temperature
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
block = 'pellet liner clad'
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
block = 'pellet liner clad'
[]
[heat_source]
type = ADFissionRateHeatSource
variable = temperature
fission_rate = fission_rate
energy_deposited_in_fuel = 0.95
block = 'pellet'
[]
[gamma_heating]
type = ADMatBodyForce
variable = temperature
block = 'pellet liner clad'
material_property = gamma_heating_density
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = clad_inside_right
secondary_boundary = pellet_outer_radial_surface
initial_moles = initial_moles
gas_released = fg_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
use_automatic_differentiation = true
# use mechanical contact subdomains
primary_subdomain = mechanical_primary_subdomain
secondary_subdomain = mechanical_secondary_subdomain
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = clad_inside_right
secondary = pellet_outer_radial_surface
c_normal = 1e+11
correct_edge_dropping = true
[]
[]
[BCs]
[no_x_all]
type = ADDirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[no_y_clad]
type = ADDirichletBC
variable = disp_y
boundary = clad_outside_bottom
value = 0.0
[]
[no_y_fuel]
type = ADDirichletBC
variable = disp_y
boundary = bottom_central_pellet_node
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
function = ${coolant_pressure}
use_automatic_differentiation = true
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = inside_surfaces
initial_pressure = ${initial_plenum_pressure}
startup_time = 0
R = ${R}
initial_temperature = ${initial_temperature}
temperature = ave_temperature_interior # coupling to post processor to get gas temperature approximation
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
volume = gas_volume # coupling to post processor to get gas volume
additional_volumes = spacer_volume
temperature_of_additional_volumes = ave_temperature_interior
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
use_automatic_differentiation = true
[]
[]
[clad_outer_temperature]
type = ADFunctionDirichletBC
boundary = 'clad_outside_right'
function = coolant_wall_temperature
variable = temperature
[]
[]
[Materials]
[gamma_heating_density]
type = ADParsedMaterial
block = 'pellet clad liner'
material_property_names = 'density'
property_name = gamma_heating_density
expression = 'density * 500' # kg/m3 * W/kg
[]
[fission_rate]
type = ADFissionRate
block = pellet
rod_linear_power = power_history
axial_power_profile = axial_power_function
radial_power_profile = radial_power_function
pellet_radius = ${fuel_radius}
outputs = all
[]
[burnup]
type = ADBurnup
block = pellet
atoms_heavy_metal_per_volume = ${atoms_heavy_metal_per_volume}
outputs = all
[]
[fuel_density]
block = pellet
type = ADStrainAdjustedDensity
strain_free_density = ${density}
[]
[porosity_pp]
type = ADParsedMaterial
property_name = porosity_pp
postprocessor_names = porosity_fuel_avg
expression = porosity_fuel_avg
[]
[fuel_thermal]
type = ADMNThermal
block = pellet
temperature = temperature
porosity = porosity_pp # This is a hack until thermal mortar can handle stateful materials
outputs = all
[]
[fuel_porosity]
type = ADPorosityFromStrain
block = pellet
initial_porosity = ${initial_porosity}
inelastic_strain = 'gaseous_swelling_eigenstrain'
outputs = all
[]
[fuel_elasticity_tensor]
block = pellet
type = ADMNElasticityTensor
temperature = temperature
use_old_porosity = true
porosity = porosity
output_properties = 'youngs_modulus poissons_ratio'
outputs = all
[]
[fuel_thermal_expansion]
block = pellet
type = ADMNThermalExpansionEigenstrain
eigenstrain_name = fuel_thermal_expansion
stress_free_temperature = ${initial_temperature}
temperature = temperature
[]
[fuel_radial_return_stress]
block = pellet
type = ADComputeMultipleInelasticStress
inelastic_models = 'fuel_creep'
[]
[fuel_creep]
block = pellet
type = ADMNCreepUpdate
max_inelastic_increment = 1e-3
temperature = temperature
porosity = porosity
fission_rate = fission_rate
outputs = all
[]
[burnup_swelling]
type = ADBurnupDependentEigenstrain
block = pellet
eigenstrain_name = 'solid_swelling_eigenstrain'
swelling_factor = 0.5 # 0.5% solid fission product swelling per % FIMA
burnup = burnup
outputs = all
[]
[gaseous_swelling]
type = ADParsedMaterial
block = pellet
material_property_names = 'deltav_v0_bubble_bulk deltav_v0_bd deltav_v0_bubble_intra_dislocation'
property_name = 'gaseous_swelling'
expression = 'deltav_v0_bubble_bulk + deltav_v0_bd + deltav_v0_bubble_intra_dislocation'
outputs = all
[]
[gaseous_swelling_eigenstrain]
type = ADComputeVolumetricEigenstrain
block = pellet
volumetric_materials = 'deltav_v0_bubble_bulk deltav_v0_bd deltav_v0_bubble_intra_dislocation'
eigenstrain_name = 'gaseous_swelling_eigenstrain'
[]
[vacancy_GB_diffusion]
type = ADParsedMaterial
block = pellet
property_name = vacancy_GB_diffusion
coupled_variables = 'temperature'
expression = 'kBT := 1.380649e-23 / 1.602176634e-19 * temperature;
${D1_scalar} * ${D10} * exp(-1.0 * ${Q1} / kBT) * 1e6'
[]
[fission_gas_behavior]
type = ADUNSifgrs
block = pellet
temperature = temperature
fission_rate_material = fission_rate
ig_bubble_coarsening = WITH_COARSENING
grain_radius_const = ${grain_radius}
dislocation_density_material = dislocation_density
vacancy_diffusivity_function = vacancy_diffusivity_function
gas_diffusivity_function = gas_diffusivity_function
outputs = all
initial_porosity = ${initial_porosity}
fract_yield = 0.475
shear_modulus = shear_modulus
dislocation_bubble_nucleation_factor = 5e5
vacancy_GB_diffusivity = vacancy_GB_diffusion
[]
[dislocation_density]
type = ADParsedMaterial
block = pellet
property_name = dislocation_density
expression = ${dislocation_density}
outputs = all
[]
[clad_elasticity_tensor]
block = clad
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 68.9e9
poissons_ratio = 0.4
[]
[clad_thermal_expansion]
block = clad
type = ADComputeThermalExpansionEigenstrain
eigenstrain_name = clad_thermal_expansion
thermal_expansion_coeff = 7.54e-6
stress_free_temperature = ${initial_temperature}
temperature = temperature
[]
[clad_stress]
block = clad
type = ADComputeFiniteStrainElasticStress
[]
[clad_thermal]
type = ADHeatConductionMaterial
block = clad
thermal_conductivity = 41.9
specific_heat = 270
[]
[clad_density]
block = clad
type = ADStrainAdjustedDensity
strain_free_density = 8590
[]
[liner_elasticity_tensor]
block = liner
type = ADTungstenElasticityTensor
temperature = temperature
[]
[liner_thermal_expansion]
block = liner
type = ADTungstenThermalExpansionEigenstrain
eigenstrain_name = liner_thermal_expansion
stress_free_temperature = ${initial_temperature}
temperature = temperature
[]
[liner_stress]
block = liner
type = ADComputeFiniteStrainElasticStress
[]
[liner_thermal]
block = liner
type = ADTungstenThermal
temperature = temperature
[]
[liner_density]
block = liner
type = ADStrainAdjustedDensity
strain_free_density = 19300
[]
[]
[Dampers]
[disp_x]
type = MaxIncrement
variable = disp_x
max_increment = 1e-4
[]
[disp_y]
type = MaxIncrement
variable = disp_y
max_increment = 1e-3
[]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-15'
line_search = contact
l_max_its = 60
nl_max_its = 20
nl_rel_tol = 5e-6
nl_abs_tol = 5e-9
nl_div_tol = -1
nl_abs_div_tol = -1
end_time = ${total_time}
dtmin = 1
dtmax = 5e5
verbose = true
automatic_scaling = true
compute_scaling_once = false
ignore_variables_for_autoscaling = 'thermal_contact_thermal_lm mechanical_normal_lm'
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = time_step_limit
force_step_every_function_point = true
timestep_limiting_function = power_history
dt = 1e2
post_function_sync_dt = 1e3
[]
[]
[Postprocessors]
# elemental temperatures
[temperature_fuel_avg]
type = ElementAverageValue
variable = temperature
block = pellet
execute_on = 'initial timestep_end'
[]
[temperature_fuel_max]
type = ElementExtremeValue
variable = temperature
block = pellet
execute_on = 'initial timestep_end'
[]
[temperature_fuel_min]
type = ElementExtremeValue
variable = temperature
block = pellet
value_type = min
execute_on = 'initial timestep_end'
[]
[temperature_cladding_avg]
type = ElementAverageValue
variable = temperature
block = clad
execute_on = 'initial timestep_end'
[]
[temperature_cladding_max]
type = ElementExtremeValue
variable = temperature
block = clad
execute_on = 'initial timestep_end'
[]
[temperature_cladding_min]
type = ElementExtremeValue
variable = temperature
block = clad
value_type = min
execute_on = 'initial timestep_end'
[]
[temperature_liner_avg]
type = ElementAverageValue
variable = temperature
block = liner
execute_on = 'initial timestep_end'
[]
[temperature_liner_max]
type = ElementExtremeValue
variable = temperature
block = liner
execute_on = 'initial timestep_end'
[]
[temperature_liner_min]
type = ElementExtremeValue
variable = temperature
block = liner
value_type = min
execute_on = 'initial timestep_end'
[]
[ave_temperature_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = inside_surfaces
variable = temperature
execute_on = 'initial linear'
[]
[temperature_fuel_centerline_avg]
type = AxisymmetricCenterlineAverageValue
boundary = centerline
variable = temperature
execute_on = 'initial timestep_end'
[]
[temperature_fuel_centerline_max]
type = NodalExtremeValue
boundary = centerline
variable = temperature
execute_on = 'initial timestep_end'
[]
[temperature_fuel_centerline_min]
type = NodalExtremeValue
boundary = centerline
variable = temperature
value_type = min
execute_on = 'initial timestep_end'
[]
[temperature_fuel_surface_avg]
type = SideAverageValue
boundary = pellet_outer_radial_surface
variable = temperature
execute_on = 'initial timestep_end'
[]
[temperature_fuel_surface_max]
type = NodalExtremeValue
boundary = pellet_outer_radial_surface
variable = temperature
execute_on = 'initial timestep_end'
[]
[temperature_fuel_surface_min]
type = NodalExtremeValue
boundary = pellet_outer_radial_surface
variable = temperature
value_type = min
execute_on = 'initial timestep_end'
[]
# stresses
[stress_vonmises_fuel_avg]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[stress_vonmises_fuel_max]
type = ElementExtremeValue
variable = vonmises_stress
block = pellet
[]
[stress_vonmises_fuel_min]
type = ElementExtremeValue
variable = vonmises_stress
value_type = min
block = pellet
[]
[stress_hydro_fuel_avg]
type = ElementAverageValue
variable = hydrostatic_stress
block = pellet
[]
[stress_hydro_fuel_max]
type = ElementExtremeValue
variable = hydrostatic_stress
block = pellet
[]
[stress_hydro_fuel_min]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
# strain information
[strain_solid_swelling_fuel_avg]
type = ElementAverageValue
variable = solid_swelling
block = pellet
[]
[strain_volumetric_fuel_avg]
type = ElementAverageValue
variable = firstinv_strain
block = pellet
[]
[strain_axial_fuel_avg]
type = ParsedPostprocessor
pp_names = 'disp_y_fuel_top_surface_avg disp_y_fuel_bottom_surface_avg'
expression = '(disp_y_fuel_top_surface_avg - disp_y_fuel_bottom_surface_avg) / ${fuel_height}'
[]
[disp_y_fuel_top_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = top_of_top_pellet
[]
[disp_y_fuel_top_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = top_of_top_pellet
[]
[disp_y_fuel_bottom_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = bottom_of_bottom_pellet
[]
[disp_y_fuel_bottom_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = bottom_of_bottom_pellet
[]
[disp_x_fuel_radial_surface_max]
type = NodalExtremeValue
variable = disp_x
boundary = pellet_outer_radial_surface
[]
[disp_x_fuel_radial_surface_avg]
type = SideAverageValue
variable = disp_x
boundary = pellet_outer_radial_surface
[]
[disp_x_cladding_radial_surface_max]
type = NodalExtremeValue
variable = disp_x
boundary = clad_outside_right
[]
[disp_x_cladding_radial_surface_avg]
type = SideAverageValue
variable = disp_x
boundary = clad_outside_right
[]
[burnup_avg]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[burnup_max]
type = ElementExtremeValue
block = pellet
variable = burnup
[]
[fission_rate_avg]
type = ElementAverageValue
variable = fission_rate
block = pellet
execute_on = 'initial timestep_end'
[]
[fission_rate_max]
type = ElementExtremeValue
variable = fission_rate
block = pellet
execute_on = 'initial timestep_end'
[]
[dislocation_density_avg]
type = ElementAverageValue
variable = dislocation_density
block = pellet
execute_on = 'initial timestep_end'
[]
[porosity_fuel_avg]
type = ElementAverageValue
variable = porosity
block = pellet
execute_on = 'initial timestep_end'
[]
[porosity_fuel_max]
type = ElementExtremeValue
variable = porosity
block = pellet
execute_on = 'initial timestep_end'
[]
[porosity_fuel_min]
type = ElementExtremeValue
variable = porosity
value_type = min
block = pellet
execute_on = 'initial timestep_end'
[]
[swelling_dia_percent]
type = ParsedPostprocessor
pp_names = 'disp_x_fuel_radial_surface_avg'
expression = 'disp_x_fuel_radial_surface_avg / ${fparse pi * fuel_radius} * 100'
[]
[fuel_volume]
type = VolumePostprocessor
block = pellet
execute_on = 'TIMESTEP_END INITIAL'
use_displaced_mesh = true
[]
[swelling_vol_percent]
type = ParsedPostprocessor
pp_names = 'fuel_volume'
expression = '(fuel_volume - ${fuel_volume}) / ${fuel_volume} * 100'
[]
[gas_volume]
type = InternalVolume
boundary = inside_surfaces
execute_on = 'initial linear'
[]
[spacer_volume]
type = ParsedPostprocessor
pp_names = ''
expression = '${fparse - pi / 4 * (spacer_diameter^2 - (spacer_diameter - spacer_thickness * 2))^2 * spacer_height * 2}'
outputs = none
[]
# fission gas information
[deltav_v0_bubble_bulk]
type = ADElementAverageMaterialProperty
mat_prop = deltav_v0_bubble_bulk
block = pellet
[]
[deltav_v0_bd]
type = ADElementAverageMaterialProperty
mat_prop = deltav_v0_bd
block = pellet
[]
[deltav_v0_bubble_intra_dislocation]
type = ADElementAverageMaterialProperty
mat_prop = deltav_v0_bubble_intra_dislocation
block = pellet
[]
[fg_produced]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_generated_total
block = pellet
[]
[fg_released]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_release_total
block = pellet
[]
[fgr_percent]
type = ParsedPostprocessor
pp_names = 'fg_released fg_produced'
expression = 'fg_released / fg_produced * 100'
[]
[fg_grain_boundary]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_GB_bubble_volume
block = pellet
[]
[fg_matrix]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_matrix_intra
block = pellet
[]
[fg_intra_bubble]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_bubble_intra
block = pellet
[]
[fg_dislocation]
type = ADElementIntegralMaterialProperty
mat_prop = gas_concentration_bubble_intra_dislocation
block = pellet
[]
[gas_conservation]
type = ParsedPostprocessor
pp_names = 'fg_produced fg_released fg_dislocation fg_intra_bubble fg_matrix fg_grain_boundary'
expression = 'fg_produced - fg_released - fg_dislocation - fg_intra_bubble - fg_matrix - fg_grain_boundary'
[]
[GBcoverage_max]
type = ElementExtremeValue
variable = GBCoverage
block = pellet
[]
[GBcoverage_min]
type = ElementExtremeValue
variable = GBCoverage
value_type = min
block = pellet
[]
[GBcoverage_avg]
type = ElementAverageValue
variable = GBCoverage
block = pellet
[]
# extras
[actual_time_step_limit]
type = MaterialTimeStepPostprocessor
outputs = none
block = 'pellet'
[]
[time_step_limit]
type = ParsedPostprocessor
expression = 'if(actual_time_step_limit > 1e6, 1e6, actual_time_step_limit)'
pp_names = 'actual_time_step_limit'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[coolant_temperature]
type = FunctionValuePostprocessor
function = coolant_wall_temperature
[]
[]
[VectorPostprocessors]
[centerline]
type = SideValueSampler
boundary = centerline
variable = 'temperature fission_rate'
sort_by = y
outputs = base
[]
[cladding_surface]
type = SideValueSampler
boundary = clad_outside_right
variable = 'temperature fission_rate disp_x'
sort_by = y
outputs = base
[]
[midplane]
type = LineValueSampler
start_point = '0 ${fparse pin_height / 2} 0'
end_point = '${fuel_radius} ${fparse pin_height / 2} 0'
variable = 'temperature fission_rate'
num_points = 11
sort_by = x
outputs = base
[]
[]
[PerformanceMetricOutputs]
outputs = 'out console base'
[]
[Outputs]
perf_graph = true
sync_times = '1e2 1e3 5e3 1e4 5e4 1e5 5e5 1e6 2e6 3e6 4e6 5e6 6e6 7e6 8e6 9e6 1e7 ${time_end_ramp_up} ${time_start_ramp_down} ${time_end_ramp_down} ${total_time}'
file_base = '${group_name}_out'
[out]
type = Exodus
time_step_interval = 10
[]
[sync]
type = CSV
file_base = '${group_name}_sync_out'
show = 'burnup_avg temperature_fuel_avg temperature_fuel_max temperature_cladding_avg temperature_cladding_max temperature_liner_avg swelling_vol_percent fgr_percent fission_rate_avg fission_rate_max porosity_fuel_avg porosity_fuel_max'
sync_only = true
[]
[PIE_out]
type = CSV
file_base = '${group_name}_PIE_out'
show = 'burnup_avg fgr_percent swelling_vol_percent'
execute_on = 'FINAL'
[]
[checkpoint]
type = Checkpoint
time_step_interval = 10
[]
[base]
type = CSV
file_base = '${group_name}_csvs/${group_name}_base_out'
[]
[console]
type = Console
show = 'temperature_cladding_avg temperature_cladding_max GBcoverage_max GBcoverage_avg fgr_percent gas_conservation time_step_limit time_step_size temperature_fuel_avg temperature_fuel_max stress_vonmises_fuel_max stress_hydro_fuel_max stress_hydro_fuel_min strain_axial_fuel_avg burnup_avg fission_rate_avg porosity_fuel_avg disp_x_fuel_radial_surface_max disp_x_cladding_radial_surface_max swelling_vol_percent'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temperature'
show_var_residual_norms = true
[]
(examples/2D-RZ_rodlet_10pellets/smeared_cracking/SmearedCracking.i)
# This model is a higher order, smeared 10 pellet fuel stack (pellet).
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 10
pellet_height = 0.01186
pellet_outer_radius = 4.1e-3
pellet_mesh_density = coarse
clad_mesh_density = coarse
clad_gap_width = 160.0e-6
clad_thickness = 0.56e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 2.6e-2
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e08'
y = '0 2.5e4 2.5e04'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
RPF = RPF
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[elastic_stress]
type = ComputeSmearedCrackingStress
block = pellet
cracking_stress = 1.68e8
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temp
fission_rate = fission_rate
initial_grain_radius = 10e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.035
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
verbose = false
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 1.0e8
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[center_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 2579 # mesh dependent, at (0.0041, 0.0744)
[]
[center_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 2579 # mesh dependent, at (0.0041, 0.0744)
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
# [VectorPostprocessors]
# [clad]
# type = NodalValueSampler
# variable = disp_x
# boundary = 2
# sort_by = y
# outputs = 'outfile_clad_radial_displacement'
# []
# [pellet]
# type = NodalValueSampler
# variable = disp_x
# boundary = 10
# sort_by = y
# outputs = 'outfile_fuel_radial_displacement'
# []
# []
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
# [outfile_clad_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
# [outfile_fuel_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
[]
(test/tests/upuzr_fast_neutron_flux/rods.i)
# This test checks the fast neutron flux calculated UPuZrFastNeutronFlux for a series of rods, and
# ensures the correct values are calculated depending on a mix of flux, fluence, and dpa calculation
# options.
[Problem]
solve = false
[]
[Mesh]
coord_type = RZ
# rod specific parameters
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.381e-03
pellet_outer_radius = 2.197e-03
pellet_height = 344.3e-3
clad_top_gap_height = 2.979e-1
clad_gap_width = 0.348e-03
bottom_clad_height = 2.24e-3 # arbitrary
top_clad_height = 2.24e-3 # arbitrary
clad_bot_gap_height = 0.31e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 3
ny_p = 10
nx_c = 4
ny_c = 30
ny_cu = 3
ny_cl = 3
pellet_quantity = 1
[]
# mesh options
partitioner = centroid
centroid_partitioner_direction = y
[]
[DefaultElementQuality]
failure_type = Warning
[]
[Functions]
[dp11]
type = PiecewiseLinear
x = '0 10 20'
y = '0 23000 32000'
[]
[dp16]
type = PiecewiseLinear
x = '0 10 20'
y = '0 44000 48000'
[]
[dp81]
type = PiecewiseLinear
x = '0 10 20'
y = '0 29000 32000'
[]
[t179]
type = PiecewiseLinear
x = '0 10 20'
y = '0 40000 42000'
[]
[row_3]
type = PowerPeakingFunction
fit = EBRII_ROW_3
pellet_length = 343.0e-3
pellet_y_start = 2.55e-3
zero_beyond_top_and_bottom = false
[]
[row_4]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 343.0e-3
pellet_y_start = 2.55e-3
zero_beyond_top_and_bottom = false
[]
[]
[Materials]
[dp11]
type = UPuZrFastNeutronFlux
axial_power_profile = row_3
rod_linear_power = dp11
initial_X_Pu = 0
initial_X_Zr = 0.225
initial_density = 15800
pellet_radius = 2.192e-03
enrichment_U235 = 0.675
outputs = all
fast_neutron_flux_name = dp11_flux
[]
[dp16]
type = UPuZrFastNeutronFlux
axial_power_profile = dp16
rod_linear_power = row_4
initial_X_Pu = 0.163
initial_X_Zr = 0.225
initial_density = 15800
pellet_radius = 2.192e-03
enrichment_Pu240 = 0.109
enrichment_U235 = 0.697
outputs = all
fast_neutron_flux_name = dp16_flux
dpa_name = dp16_dpa
calculate_dpa = true
[]
[dp81]
type = UPuZrFastNeutronFlux
axial_power_profile = dp81
rod_linear_power = row_3
initial_X_Pu = 0
initial_X_Zr = 0.225
initial_density = 15800
pellet_radius = 2.192e-03
enrichment_U235 = 0.675310345
outputs = all
fast_neutron_flux_name = dp81_flux
fast_neutron_fluence_name = dp81_fluence
calculate_fluence = true
[]
[t179]
type = UPuZrFastNeutronFlux
axial_power_profile = t179
rod_linear_power = row_4
initial_X_Pu = 0.163
initial_X_Zr = 0.225
initial_density = 15800
pellet_radius = 2.192e-03
enrichment_Pu240 = 0.057
enrichment_U235 = 0.573
outputs = all
fast_neutron_flux_name = t179_flux
fast_neutron_fluence_name = t179_fluence
dpa_name = t179_dpa
calculate_dpa = true
calculate_fluence = true
[]
[]
[Executioner]
type = Transient
num_steps = 2
dt = 10
[]
[Postprocessors]
[dp11_flux_avg]
type = ElementAverageValue
variable = dp11_flux
[]
[dp16_flux_avg]
type = ElementAverageValue
variable = dp16_flux
[]
[dp81_flux_avg]
type = ElementAverageValue
variable = dp81_flux
[]
[t179_flux_avg]
type = ElementAverageValue
variable = t179_flux
[]
[dp16_dpa_avg]
type = ElementAverageValue
variable = dp16_dpa
[]
[dp81_fluence_avg]
type = ElementAverageValue
variable = dp81_fluence
[]
[t179_fluence_avg]
type = ElementAverageValue
variable = t179_fluence
[]
[t179_dpa_avg]
type = ElementAverageValue
variable = t179_dpa
[]
[]
[VectorPostprocessors]
[cladding_flux]
type = LineMaterialRealSampler
property = 'dp11_flux dp16_flux dp81_flux t179_flux'
start = '0.0027 0 0'
end = '0.0027 0.6469 0'
sort_by = y
[]
[]
[Outputs]
csv = true
[]
(assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part1.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_mesh]
type = FuelPinMeshGenerator
clad_top_gap_height = 0.021861442
pellet_height = 0.265388558
pellet_quantity = 1
clad_bot_gap_height = 0.01275
pellet_outer_radius = 4.1e-3
clad_gap_width = 80e-6
clad_thickness = 0.57e-3
clad_mesh_density = customize
pellet_mesh_density = customize
nx_c = 5
ny_c = 50
nx_p = 11
ny_p = 60
elem_type = QUAD8
[]
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
# Define dependent variables and initial conditions
[temperature]
initial_condition = 295.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxygen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0 166755600 166842000'
y = '0.006537 1 1 0.006537'
scale_factor = 15.5e6
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_relocation_eigenstrain fuel_volumetric_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
temperature = temperature
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
temperature = temperature
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.05 0.95 0 0 0 0'
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = MaterialRealAux
boundary = 2
variable = scale_thickness
property = oxide_scale_thickness
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
boundary = 2
variable = burst_stress
property = burst_stress
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
quadrature = true
contact_pressure = contact_pressure
refab_gas_types = He
refab_fractions = 1
refab_time = 166842000
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 3.44738e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
refab_time = 166842000
refab_pressure = 11e6
refab_temperature = 295.0
refab_volume = 1.04e-05
cladding_failure_status = burst
equilibrium_pressure = equilibrium_pressure
additional_volumes = additional_volume
temperature_of_additional_volumes = addition_temperature
[]
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.0095 # 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'
[]
[]
[Materials]
[uo2_pulverization]
type = UO2Pulverization
block = pellet
layered_average_contact_pressure = contact_pressure
temperature = temperature
burnup_function = burnup
output_properties = pulverized
outputs = all
[]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = pellet
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = pellet
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
fuel_pin_geometry = fuel_pin_geometry
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.024
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_eigenstrain
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
block = clad
type = ZryThermal
temperature = temperature
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temperature
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
# effective_strain_rate_creep = creep_strain_rate
# failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = stress_zz
hoop_creep_strain = creep_strain_zz
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = BoundingValueElementDamper
min_value = 290.0
max_value = 3000.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -10
n_startup_steps = 1
end_time = 166842000
dtmax = 1e6
dtmin = 1e-6
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
timestep_limiting_function = forced_times
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fission_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[max_clad_hoop_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = strain_zz
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[volume_pulverized]
type = ElementIntegralMaterialProperty
mat_prop = pulverized
block = pellet
[]
[max_fuel_temp_periphery]
type = NodalExtremeValue
value_type = max
variable = temperature
boundary = 10
[]
[additional_volume]
type = FunctionValuePostprocessor
function = 8.5e-6
execute_on = 'initial linear'
[]
[addition_temperature]
type = FunctionValuePostprocessor
function = 300.0
execute_on = 'initial linear'
[]
[equilibrium_pressure]
type = FunctionValuePostprocessor
function = 101325.0
execute_on = 'initial linear'
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[checkpoint]
type = Checkpoint
num_files = 2
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'volume_pulverized'
[]
[]
(examples/multiapp/pin1.i)
## In this example the multiapp system is called to run another BISON simulation.
## (input1.i calls input2.i) An application of this might be multiple fuel pins
## in an assembly. This example also demonstrates the internal mesh maker.
initial_fuel_density = 10200
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
a_lower = 0.06951
a_upper = 3.72711
initial_porosity = 0.04
[]
# ==================================================== #
# Mesh (and Geometry, internally-meshed)
# ==================================================== #
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
clad_thickness = 0.0005
pellet_outer_radius = 0.0041
clad_bot_gap_height = 0.00152
clad_top_gap_height = 0.16
pellet_quantity = 1
pellet_height = 3.6576
clad_gap_width = 8.0e-05
bottom_clad_height = 0.0167
top_clad_height = 0.0167
nx_p = 6 # number of radial elements in the fuel
ny_p = 48 # number of axial elements in the fuel
nx_c = 3 # number of elements in the clad thickness
ny_c = 48 # number of elements in the axially in the clad
ny_cu = 1
ny_cl = 1
intervals = '0.03866 0.08211 0.08211 0.08211 0.08212 0.08211 0.08211 0.08211 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.08065 0.08065 0.08065 0.08065 0.08065 0.08065 0.0381 0.079212 0.079212 0.079212 0.079212 0.079212'
elem_type = QUAD4
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 10
patch_update_strategy = auto
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 493
[]
# ==================================================== #
# Dimensions and Primary Variables
# ==================================================== #
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 3.000000e+02
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
# ==================================================== #
# Auxiliary Variables
# ==================================================== #
[AuxVariables]
# ================================================== #
# Nodal Quantities
# ================================================== #
[htcl]
initial_condition = 500.0
[]
[htcv]
initial_condition = 0.0
[]
[Tl]
initial_condition = 565.0
[]
[Tv]
initial_condition = 565.0
[]
[burnup]
block = 3
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 5.240000e-06
[]
# ================================================== #
# Constant Monomial Quantities (Non-Mechanics)
# ================================================== #
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[axial_fission_rate]
order = CONSTANT
family = MONOMIAL
[]
[axial_burnup]
order = CONSTANT
family = MONOMIAL
[]
[axial_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.04
[]
[]
# ==================================================== #
# Time- and Space-Dependent Source and BCs
# ==================================================== #
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
x = '-100 0 5000'
y = '0 0 25000'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_temperature]
type = PiecewiseLinear
x = '-100 0'
y = '293 565'
axis = y
[]
[coolant_pressure_ramp]
# used in coolantPressure BC
type = PiecewiseLinear
scale_factor = 1
x = '0 10000.0'
y = '0 1.0'
[]
[]
# ==================================================== #
# Burnup Equation Set
# ==================================================== #
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0041
fuel_volume_ratio = 1.0
isotopes = 'U235 U238'
isotope_fractions = '3.100e-02 9.690e-01'
RPF = RPF
[]
[]
# ==================================================== #
# Primary Kernels used in Heat Transfer
# ==================================================== #
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
# gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
# time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
extra_vector_tags = 'ref'
block = 3
[]
[]
[AuxKernels]
# ================================================== #
# Pre-Defined Types
# ================================================== #
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
factor = 1.27e+14 # (n/m2-s per W/m)
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = linear
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
execute_on = linear
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
execute_on = linear
[]
# ================================================== #
# Other General Types
# ================================================== #
[axial_burnup]
type = SpatialUserObjectAux
block = 3
variable = axial_burnup
user_object = axial_burnup
execute_on = timestep_begin
[]
[axial_temperature]
type = SpatialUserObjectAux
block = 3
variable = axial_temperature
user_object = axial_temperature
execute_on = timestep_begin
[]
[]
# ==================================================== #
# Mechanical and Thermal Contact
# ==================================================== #
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
normal_smoothing_distance = 0.1
model = frictionless
formulation = Kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.200000e+00
roughness_primary = 1.8e-06
roughness_secondary = 8e-07
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 0.0001
normal_smoothing_distance = 0.1
order = FIRST
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[convective_clad_surface_bottom]
type = ConvectiveFluxBC
boundary = '1 2 3'
variable = temp
rate = 38200.0 #convection coefficient (h)
initial = 565.0
final = 585.0
duration = 1.0e4 #duration of initial power ramp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.55132e+07
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 1.99948e+06
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
# ==================================================== #
# Specification of Material Properties
# ==================================================== #
[Materials]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
diameter = 0.008192
diametral_gap =0.000168
# Average burnup at which fuel comes into contact with clad at 25kW/m
burnup_relocation_stop = 0.0315
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10200.0
eigenstrain_name = fuel_volumetric_strain
total_densification = 0.01
[]
[fission_gas_release]
type = UO2Sifgrs
axial_power_profile = axial_peaking_factors
block = 3
burnup = burnup
fission_rate = fission_rate
hydrostatic_stress = hydrostatic_stress
grain_radius = grain_radius
pellet_brittle_zone = pbz
pellet_id = pellet_id
rod_ave_lin_pow = linear_heat_rate_profile
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = 1
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 1
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 7833
[]
[]
# ==================================================== #
# User Objects for Output Processing
# ==================================================== #
[UserObjects]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.0041
number_pellets = 1
execute_on = linear
[]
[averagefissionrate]
type = LayeredAverage
block = 3
variable = fission_rate
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[average_temp]
type = LayeredAverage
block = 3
variable = temp
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[averagebu]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 49
execute_on = timestep_begin
[]
[casl_average_fission_rate]
variable = fission_rate
type = LayeredAverage
block = 3
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[surface_temp]
type = LayeredSideAverage
boundary = 2
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[axial_temperature]
type = LayeredAverage
block = 3
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[axial_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[integral_temperature]
type = LayeredAverage
block = 3
variable = temp
direction = y
num_layers = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
execute_on = timestep_begin
[]
[average]
type = LayeredAverage
block = 3
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
execute_on = timestep_begin
[]
[axial_surface_temperature]
type = LayeredSideAverage
boundary = 2
variable = temp
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[rod_avg_fast_fluence]
type = LayeredSideAverage
boundary = 2
variable = fast_neutron_fluence
direction = y
num_layers = 1
use_displaced_mesh = 0
execute_on = timestep_begin
[]
[casl_clad_surface_heat_flux]
type = LayeredSideDiffusiveFluxAverage
variable = temp
boundary = 2
direction = y
bounds = '0.01822 0.05688 0.13899 0.2211 0.30321 0.38533 0.46744 0.54955 0.63166 0.66976 0.75041 0.83106 0.91171 0.99236 1.07301 1.15366 1.19176 1.27241 1.35306 1.43371 1.51436 1.59501 1.67566 1.71376 1.79441 1.87506 1.95571 2.03636 2.11701 2.19766 2.23576 2.31641 2.39706 2.47771 2.55836 2.63901 2.71966 2.75776 2.83841 2.91906 2.99971 3.08036 3.16101 3.24166 3.27976 3.35897 3.43818 3.5174 3.59661 3.67582'
diffusivity = thermal_conductivity
execute_on = timestep_begin
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 293
[]
[]
# ==================================================== #
# Solver Options
# ==================================================== #
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
verbose = true
line_search = 'none'
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 15
nl_rel_tol = 1e-6
nl_abs_tol = 1e-10
# ================================================== #
# Time Step Control
# ================================================== #
start_time = -100
end_time = 5e6
dtmin = 0.1
dtmax = 1e6
dt = 10
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e2
optimal_iterations = 1000
time_t = '0 1.0e4 53200 1.0e5'
time_dt = '1.0e3 1.0e3 1.0e3 1.0e5'
[]
[]
[Postprocessors]
# ================================================== #
# Required for Fission Gas Release Models
# ================================================== #
[ave_temp_interior]
# used to compute temperature of plenum
type = SideAverageValue
boundary = 9
variable = temp
outputs = exodus
execute_on = 'initial linear'
[]
[fission_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[gas_volume]
type = InternalVolume
boundary = 9
outputs = exodus
execute_on = 'initial linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
execute_on = linear
[]
[_dt]
type = TimestepSize
execute_on = timestep_end
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
# ==================================================== #
# Location and format of output
# ==================================================== #
[Outputs]
perf_graph = true
exodus = true
file_base = pin1_output
time_step_interval = 1
[console]
type = Console
max_rows = 25
output_linear = true
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
positions = '10 0 0'
input_files = 'pin2.i'
[]
[]
(test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_intervals_with_liner.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
intervals = '0.01186 0.01186'
intervals_ny = '2 4'
ny_c_plenum = 12
ny_c_bot_gap = 6
liner_thickness = 1e-4
nx_liner = 2
nx_c = 4
ny_cl = 4
ny_cu = 4
clad_mesh_density = customize
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/0pt7MPa/100C_sec/Hardy_Tube_Test_0pt7MPa.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[gen]
type = FuelPinMeshGenerator
include_fuel = false
include_clad = true
pellet_outer_radius = 0.0072527
clad_gap_width = 0.0
clad_top_gap_height = 0.0
clad_bot_gap_height = 0.0
clad_thickness = 0.38e-3
pellet_height = 0.5
pellet_quantity = 1
clad_mesh_density = customize
nx_c = 2
ny_c = 50
elem_type = QUAD8
[]
[]
[Variables]
[temperature]
initial_condition = 600.0
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 40'
y = '1 1'
[]
[temp_function]
type = PiecewiseLinear
y = '600 1600'
[]
[temperature_profile]
type = PiecewiseBilinear
y = '0 40'
x = '0 0.25224 0.50448'
z = '0.995 1.01 0.995 0.995 1.01 0.995'
axis = 1
[]
[inner_temperature]
type = CompositeFunction
functions = 'temp_function temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
factor = 0.0
function = pressure_function
[]
[inner_surface]
boundary = 'clad_inside_right clad_inside_bottom clad_inside_top'
function = pressure_function
[]
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 1001
value = 0.0
[]
[x_fix]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
function = inner_temperature
variable = temperature
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[Materials]
[clad_thermal]
type = ZryThermal
block = clad
zry_thermal_properties_model = MATPRO
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = true
matpro_poissons_ratio = true
temperature = temperature
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = true
model_thermal_creep = true
temperature_loca_creep_begin = 840 # values from the report
temperature_standard_thermal_creep_end = 975
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 600.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-5
nl_abs_tol = 1.0e-8
start_time = 0
n_startup_steps = 1
end_time = 40
dtmax = 1
dtmin = 0.0000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 1.0
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = all_clad_interior
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = total_hoop_strain
[]
[max_disp_x]
type = NodalExtremeValue
block = clad
value_type = max
variable = disp_x
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[csv]
type = CSV
[]
[chkfile]
type = CSV
show = 'max_disp_x max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = false
[]
[]
(test/tests/metallic_fuel_cladding_degradation/test_id_missing_geom.i)
# This is to test the calculation of cladding degradation factor function based on a vectorpostprocessor
[Problem]
solve = false
[]
[Mesh]
coord_type = RZ
[gen]
type = FuelPinMeshGenerator
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_bot_gap_height = 0.31e-3
clad_thickness = 3.81e-4
clad_gap_width = 0.19e-4
pellet_outer_radius = 4.00e-3
pellet_height = 0.05
pellet_quantity = 1
clad_top_gap_height = 0.05
include_fuel = false
clad_mesh_density = customize
nx_c = 25
ny_c = 100
ny_cu = 5
ny_cl = 5
[]
[]
[Functions]
[id_degradation]
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = id_wastage
argument_column = y
value_column = wastage_thickness
[]
[]
[AuxVariables]
[func_val]
[]
[]
[AuxKernels]
[func_val]
type = FunctionAux
function = id_degradation
variable = func_val
[]
[]
[Executioner]
type = Transient
num_steps = 10
dt = 1.0
[]
[VectorPostprocessors]
[id_wastage]
type = CSVReaderVectorPostprocessor
csv_file = id_wast.csv
force_preic = true
[]
[]
[Outputs]
execute_on = FINAL
exodus = true
[]
(assessment/MOX/JOYO/B14/PTM002/analysis/b14_ptm002_2DRZ_t.i)
initial_fuel_density = 11057.75
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.4
pellet_outer_radius = 0.002675
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000105
clad_thickness = 0.00047
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.685
elem_type = QUAD8
nx_c = 4
ny_c = 100
nx_p = 20
ny_p = 100
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
[]
[burnup]
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 39814.5 39814.5 44289.3 44289.3 53927.4 53927.4 0'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 251280'
y = '3.3e+15 3.3e+15'
[]
[f_temp_out_clad]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 634.94 662.273 676.998 686.217 706.339 727 743.358 758.311 780.069 799.077 815.576 846.374 860.233 875.494 882.809 889.8'
scale_factor = 1
axis = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846 0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 34700 34700 38600 38600 47000 47000 0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.1372
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.00535
execute_on = timestep_begin
porosity = pore
energy_per_fission = 3.2e-11
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[temp_clad_outside]
type = FunctionDirichletBC
variable = temp
function = f_temp_out_clad
boundary = 2
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
temperature = temp
porosity = pore
block = pellet
Am_content = 0.0237
oxy_to_metal_ratio = 1.982
output_properties = 'thermal_conductivity'
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 11057.75
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius_const = 12e-06
bubble_gb_limit = 1.0e+11
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
line_search = 'none'
fixed_point_max_its = 1
fixed_point_abs_tol = 1e-3
fixed_point_rel_tol = 1e-3
l_max_its = 50
l_tol = 8e-3
nl_max_its = 50
nl_rel_tol = 1e-3
nl_abs_tol = 1e-3
start_time = 0
n_startup_steps = 1
end_time = 251280
dtmax = 10000
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e1
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = ElementAverageValue
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
variable = burnup
[]
[ave_pore]
type = ElementAverageValue
block = pellet
variable = pore
[]
[max_pore]
type = NodalExtremeValue
block = pellet
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
block = pellet
value_type = min
variable = pore
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.4 # rod height
[]
[]
[VectorPostprocessors]
[fuel_radial_temperature_Sample1]
type = LineValueSampler
variable = temp
start_point = '0.0 0.283 0.0'
end_point = '0.002675 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample1]
type = LineValueSampler
variable = pore
start_point = '0.0 0.283 0.0'
end_point = '0.002675 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample2]
type = LineValueSampler
variable = temp
start_point = '0.0 0.347 0.0'
end_point = '0.002675 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample2]
type = LineValueSampler
variable = pore
start_point = '0.0 0.347 0.0'
end_point = '0.002675 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample3]
type = LineValueSampler
variable = temp
start_point = '0.0 0.2 0.0'
end_point = '0.002675 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample3]
type = LineValueSampler
variable = pore
start_point = '0.0 0.2 0.0'
end_point = '0.002675 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[line_plot]
type = CSV
execute_on = 'FINAL'
time_step_interval = 1
file_base = 1d
create_final_symlink = true
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = b14_ptm002_pore.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
[]
(examples/accident_tolerant_fuel/uo2_coated_zircaloy/uo2_coated_zircaloy.i)
initial_fuel_density = 10431.0
[GlobalParams]
# Set initial fuel density, other global parameters
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_top_gap_height = 0.026
pellet_height = 0.1186
pellet_quantity = 1
clad_bot_gap_height = 0
pellet_outer_radius = 4.1e-3
clad_gap_width = 80e-6
clad_thickness = 0.57e-3
coating_thickness = 40e-6
clad_mesh_density = customize
pellet_mesh_density = customize
nx_c = 3
ny_c = 40
nx_p = 11
ny_p = 40
nx_coating = 2
elem_type = QUAD8
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 293.0
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_inner_wall = 5
clad_outer_wall = 2
clad_top = 3
clad_bottom = 1
pellet_exteriors = 8
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_hoop]
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e4 1e8'
y = '0 2.5e4 2.5e4'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0 1e8'
y = '6.537e-3 1 1'
scale_factor = 15.5e6
[]
[mass_flux_func]
type = PiecewiseLinear
x = '-200 0 1e8'
y = '3800. 3800. 3800.'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[coating]
block = coating
strain = FINITE
eigenstrain_names = 'coating_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = total_hoop_strain
scalar_type = HoopStress
execute_on = timestep_end
[]
[creep_strain_hoop]
type = RankTwoScalarAux
rank_two_tensor = creep_strain
variable = creep_strain_hoop
scalar_type = HoopStress
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
normal_smoothing_distance = 0.1
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 580
inlet_pressure = pressure_ramp
inlet_massflux = mass_flux_func
rod_diameter = 9.54e-3
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
# Fuel
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[elastic_stress]
type = ComputeSmearedCrackingStress
block = pellet
cracking_stress = 1.68e8
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
burnup_function = burnup
temperature = temperature
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = 'pin_geometry'
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = pellet
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
# Clad
[clad_thermal]
type = ZryThermal
temperature = temperature
block = clad
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 7.5e10
poissons_ratio = 0.3
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep clad_plasticity'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 1e-4
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_plasticity]
type = ZryPlasticityUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.5
plasticity_model_type = MATPRO
zircaloy_alloy_type = 4
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6511.0
[]
# Coating
[coat_thermal]
type = ChromiumThermal
block = coating
temperature = temperature
[]
[coating_elasticity_tensor]
type = ChromiumElasticityTensor
temperature = temperature
block = coating
[]
[coat_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'coat_creep coat_plasticity'
block = coating
[]
[coat_creep]
type = ChromiumCreepUpdate
temperature = temperature
block = coating
[]
[coat_plasticity]
type = ChromiumPlasticityUpdate
temperature = temperature
block = coating
fast_neutron_fluence = 0.0
hardening_constant = 2e9
[]
[coat_thermal_expansion]
type = ChromiumThermalExpansionEigenstrain
block = coating
temperature = temperature
stress_free_temperature = 293.0
eigenstrain_name = coating_thermal_eigenstrain
[]
[density_coat]
type = StrainAdjustedDensity
block = coating
strain_free_density = 7190.0
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
max_value = 3200.0
min_value = 293.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 1e-5
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 5e7
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = 5e5
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2.0
timestep_limiting_postprocessor = material_timestep
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temperature
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[_dt]
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[alhr_input]
type = FunctionValuePostprocessor
function = power_history
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[oxide_thickness]
type = ElementExtremeValue
block = clad
variable = oxide_thickness
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
csv = true
print_linear_residuals = true
color = false
[console]
type = Console
max_rows = 25
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_F/x441_leg_F.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_swelling'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = MaterialRealAux
variable = porosity
property = porosity
block = pellet
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrain
block = pellet
temperature = temp
# hydrostatic_stress = hydrostatic_stress
hydrostatic_stress = 1e6
eigenstrain_name = fuel_volumetric_swelling
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_legacy_swell
[out2]
type = CSV
file_base = x441_${group_name}_legacy_swell_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_legacy_swell_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_legacy_swell_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/0pt3MPa/100C_sec/100C_sec_Hardy_Tube_Test_0pt3MPa.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[gen]
type = FuelPinMeshGenerator
include_fuel = false
include_clad = true
pellet_outer_radius = 0.0072527
clad_gap_width = 0.0
clad_top_gap_height = 0.0
clad_bot_gap_height = 0.0
clad_thickness = 0.38e-3
pellet_height = 0.5
pellet_quantity = 1
clad_mesh_density = customize
nx_c = 2
ny_c = 50
elem_type = QUAD8
[]
[]
[Variables]
[temperature]
initial_condition = 600.0
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 40'
y = '1 1'
[]
[temp_function]
type = PiecewiseLinear
y = '600 1600'
[]
[temperature_profile]
type = PiecewiseBilinear
y = '0 40'
x = '0 0.25224 0.50448'
z = '0.995 1.01 0.995 0.995 1.01 0.995'
axis = 1
[]
[inner_temperature]
type = CompositeFunction
functions = 'temp_function temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
factor = 0.0
function = pressure_function
[]
[inner_surface]
boundary = 'clad_inside_right clad_inside_bottom clad_inside_top'
function = pressure_function
[]
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 1001
value = 0.0
[]
[x_fix]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
function = inner_temperature
variable = temperature
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[Materials]
[clad_thermal]
type = ZryThermal
block = clad
zry_thermal_properties_model = MATPRO
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = true
matpro_poissons_ratio = true
temperature = temperature
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = true
model_thermal_creep = true
temperature_loca_creep_begin = 840 # values from the report
temperature_standard_thermal_creep_end = 975
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 600.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-5
nl_abs_tol = 1.0e-8
start_time = 0
n_startup_steps = 1
end_time = 40
dtmax = 1
dtmin = 0.0000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 1.0
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = all_clad_interior
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = total_hoop_strain
[]
[max_disp_x]
type = NodalExtremeValue
block = clad
value_type = max
variable = disp_x
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[csv]
type = CSV
[]
[chkfile]
type = CSV
show = 'max_disp_x max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/1pt4MPa/100C_sec/100C_sec_Hardy_Tube_Test_1pt4MPa.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[gen]
type = FuelPinMeshGenerator
include_fuel = false
include_clad = true
pellet_outer_radius = 0.0072527
clad_gap_width = 0.0
clad_top_gap_height = 0.0
clad_bot_gap_height = 0.0
clad_thickness = 0.38e-3
pellet_height = 0.5
pellet_quantity = 1
clad_mesh_density = customize
nx_c = 2
ny_c = 50
elem_type = QUAD8
[]
[]
[Variables]
[temperature]
initial_condition = 600.0
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 40'
y = '1 1'
[]
[temp_function]
type = PiecewiseLinear
y = '600 1600'
[]
[temperature_profile]
type = PiecewiseBilinear
y = '0 40'
x = '0 0.25224 0.50448'
z = '0.995 1.01 0.995 0.995 1.01 0.995'
axis = 1
[]
[inner_temperature]
type = CompositeFunction
functions = 'temp_function temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
factor = 0.0
function = pressure_function
[]
[inner_surface]
boundary = 'clad_inside_right clad_inside_bottom clad_inside_top'
function = pressure_function
[]
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 1001
value = 0.0
[]
[x_fix]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
function = inner_temperature
variable = temperature
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[Materials]
[clad_thermal]
type = ZryThermal
block = clad
zry_thermal_properties_model = MATPRO
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = true
matpro_poissons_ratio = true
temperature = temperature
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = true
model_thermal_creep = true
temperature_loca_creep_begin = 840 # values from the report
temperature_standard_thermal_creep_end = 975
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 600.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-5
nl_abs_tol = 1.0e-8
start_time = 0
n_startup_steps = 1
end_time = 40
dtmax = 1
dtmin = 0.0000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 1.0
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = all_clad_interior
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = total_hoop_strain
[]
[max_disp_x]
type = NodalExtremeValue
block = clad
value_type = max
variable = disp_x
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[csv]
type = CSV
[]
[chkfile]
type = CSV
show = 'max_disp_x max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = false
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/x441_base_legacy_swell.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_swelling'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = MaterialRealAux
variable = porosity
property = porosity
block = pellet
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrain
block = pellet
temperature = temp
# hydrostatic_stress = hydrostatic_stress
hydrostatic_stress = 1e6
eigenstrain_name = fuel_volumetric_swelling
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_legacy_swell
[out2]
type = CSV
file_base = x441_${group_name}_legacy_swell_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_legacy_swell_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_legacy_swell_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/MOX/JOYO/B14/PTM003/analysis/b14_ptm003_2DRZ_t.i)
initial_fuel_density = 11172.82
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.4
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.00008
clad_thickness = 0.00047
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.685
elem_type = QUAD8
nx_c = 4
ny_c = 100
nx_p = 20
ny_p = 100
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
[]
[burnup]
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 39814.5 39814.5 44289.3 44289.3 53927.4 53927.4 0'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 251280'
y = '3.3e+15 3.3e+15'
[]
[f_temp_out_clad]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 634.94 662.273 676.998 686.217 706.339 727 743.358 758.311 780.069 799.077 815.576 846.374 860.233 875.494 882.809 889.8'
scale_factor = 1
axis = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846 0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 34700 34700 38600 38600 47000 47000 0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.1409
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
porosity = pore
energy_per_fission = 3.2e-11
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[temp_clad_outside]
type = FunctionDirichletBC
variable = temp
function = f_temp_out_clad
boundary = 2
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
temperature = temp
porosity = pore
block = pellet
Am_content = 0.0237
oxy_to_metal_ratio = 1.961
output_properties = 'thermal_conductivity'
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
#outputs = exodus
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.97
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 11172.82
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius_const = 11e-06
bubble_gb_limit = 1.0e+11
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
line_search = 'none'
fixed_point_max_its = 1
fixed_point_abs_tol = 1e-3
fixed_point_rel_tol = 1e-3
l_max_its = 50
l_tol = 8e-3
nl_max_its = 50
nl_rel_tol = 1e-3
nl_abs_tol = 1e-3
start_time = 0
n_startup_steps = 1
end_time = 251280
dtmax = 10000
dtmin = 0.25
automatic_scaling = true
compute_scaling_once = false
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e1
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = ElementAverageValue
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
variable = burnup
[]
[ave_pore]
type = ElementAverageValue
block = pellet
variable = pore
[]
[max_pore]
type = NodalExtremeValue
block = pellet
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
block = pellet
value_type = min
variable = pore
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
# variable = temp
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
# variable = temp
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
# variable = temp
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.4 # rod height
[]
[]
[VectorPostprocessors]
[fuel_radial_temperature_Sample1]
type = LineValueSampler
variable = temp
start_point = '0.0 0.283 0.0'
end_point = '0.0027 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample1]
type = LineValueSampler
variable = pore
start_point = '0.0 0.283 0.0'
end_point = '0.0027 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample2]
type = LineValueSampler
variable = temp
start_point = '0.0 0.347 0.0'
end_point = '0.0027 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample2]
type = LineValueSampler
variable = pore
start_point = '0.0 0.347 0.0'
end_point = '0.0027 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample3]
type = LineValueSampler
variable = temp
start_point = '0.0 0.2 0.0'
end_point = '0.0027 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample3]
type = LineValueSampler
variable = pore
start_point = '0.0 0.2 0.0'
end_point = '0.0027 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[line_plot]
type = CSV
execute_on = 'FINAL'
time_step_interval = 1
file_base = 1d
create_final_symlink = true
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = b14_ptm003_pore.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/13pt8MPa/25C_sec/25C_sec_Hardy_Tube_Test_13pt8MPa.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[gen]
type = FuelPinMeshGenerator
include_fuel = false
include_clad = true
pellet_outer_radius = 0.0072527
clad_gap_width = 0.0
clad_top_gap_height = 0.0
clad_bot_gap_height = 0.0
clad_thickness = 0.38e-3
pellet_height = 0.5
pellet_quantity = 1
clad_mesh_density = customize
nx_c = 2
ny_c = 50
elem_type = QUAD8
[]
[]
[Variables]
[temperature]
initial_condition = 600.0
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 40'
y = '1 1'
[]
[temp_function]
type = PiecewiseLinear
y = '600 1600'
[]
[temperature_profile]
type = PiecewiseBilinear
y = '0 40'
x = '0 0.25224 0.50448'
z = '0.995 1.01 0.995 0.995 1.01 0.995'
axis = 1
[]
[inner_temperature]
type = CompositeFunction
functions = 'temp_function temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
factor = 0.0
function = pressure_function
[]
[inner_surface]
boundary = 'clad_inside_right clad_inside_bottom clad_inside_top'
function = pressure_function
[]
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 1001
value = 0.0
[]
[x_fix]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
function = inner_temperature
variable = temperature
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[Materials]
[clad_thermal]
type = ZryThermal
block = clad
zry_thermal_properties_model = MATPRO
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = true
matpro_poissons_ratio = true
temperature = temperature
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = true
model_thermal_creep = true
temperature_loca_creep_begin = 840 # values from the report
temperature_standard_thermal_creep_end = 975
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 600.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-5
nl_abs_tol = 1.0e-8
start_time = 0
n_startup_steps = 1
end_time = 40
dtmax = 1
dtmin = 0.0000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 1.0
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = all_clad_interior
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = total_hoop_strain
[]
[max_disp_x]
type = NodalExtremeValue
block = clad
value_type = max
variable = disp_x
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[csv]
type = CSV
[]
[chkfile]
type = CSV
show = 'max_disp_x max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = false
[]
[]
(test/tests/zry_oxidation_cladding/zryoxidation.i)
# This test demonstrates the usage of the model for cladding oxidation from
# normal operating to high temperature (accident) conditions, through the
# epri_kwu_ce, Leistikow, and Prater relations.
#
# The purpose of this input is to be a control for the FuelPinGeometry version
# to compare against and confirm the error checking through cli-args.
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
include_fuel = false
pellet_quantity = 1
pellet_height = 0.011143
pellet_outer_radius = 4.57e-3
clad_mesh_density = coarse
clad_gap_width = 70.0e-6
clad_thickness = 0.735e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.5e-3
top_clad_height = 2.5e-3
clad_top_gap_height = 5.0e-3
elem_type = QUAD4
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
x = '0.0 100000000.0 100000010.0 100000100.0 100000110.0 100000200.0 100000210.0 100000300.0'
y = '600.0 600.0 1100.0 1100.0 1850.0 1850.0 1950.0 1950.0 '
[]
[FNFlux_func]
type = PiecewiseLinear
x = '0.0 100000300.0'
y = '1.0e+17 1.0e+17 '
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 600.0
[]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[fast_neutron_flux]
order = FIRST
family = LAGRANGE
initial_condition = 1.0e+17
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxyconc2_scale] # Oxygen concentration in ZrO2 scale (kg/m**2)
order = CONSTANT
family = MONOMIAL
[]
[oxyconc2_metal] # Oxygen concentration in metal (kg/m**2)
order = CONSTANT
family = MONOMIAL
[]
[oxyconc2_total] # Total oxygen concentration (oxide + metal) (kg/m**2)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_metal] # Oxygen weight fraction in metal (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Total oxygen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[AuxKernels]
[fnflux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
function = FNFlux_func
execute_on = timestep_begin
[]
[scl_thickness]
type = MaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 1
[]
[oconc_scale]
type = MaterialRealAux
variable = oxyconc2_scale
property = gained_oxygen_concentration_scale
boundary = 1
[]
[oconc_metal]
type = MaterialRealAux
variable = oxyconc2_metal
property = gained_oxygen_concentration_metal_wall
boundary = 1
[]
[oconc_total]
type = MaterialRealAux
variable = oxyconc2_total
property = gained_oxygen_concentration_total
boundary = 1
[]
[ofract_metal]
type = MaterialRealAux
variable = oxywtfract_metal
property = current_oxygen_weight_frac_metal_wall
boundary = 1
[]
[ofract_total]
type = MaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 1
[]
[]
[BCs]
[bottom_T]
type = FunctionDirichletBC
variable = temp
function = Temp_func
boundary = 1
[]
[x_disp]
type = DirichletBC
variable = disp_x
value = 0
boundary = 1
[]
[y_disp]
type = DirichletBC
variable = disp_y
value = 0
boundary = 2
[]
[]
[Materials]
[elasticity_tensor]
type = ZryElasticityTensor
block = 1
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[oxidation_zry]
type = ZryOxidation
boundary = 1
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_tol = 1.0e-08
nl_abs_tol = 1.0e-08
nl_rel_tol = 1.0e-08
start_time = 0.0
num_steps = 5000
end_time = 100000300
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e+06
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
time_t = '0.0 100000000.'
time_dt = '1.0e+06 10.0 '
growth_factor = 1.0
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
[]
[temp]
type = NodalVariableValue
variable = temp
nodeid = 0
execute_on = 'initial timestep_end'
[]
[scale_thickness]
type = ElementalVariableValue
elementid = 0
variable = scale_thickness
[]
[oxyconc2_scale]
type = ElementalVariableValue
elementid = 0
variable = oxyconc2_scale
[]
[oxyconc2_metal]
type = ElementalVariableValue
elementid = 0
variable = oxyconc2_metal
[]
[oxyconc2_total]
type = ElementalVariableValue
elementid = 0
variable = oxyconc2_total
[]
[oxywtfract_metal]
type = ElementalVariableValue
elementid = 0
variable = oxywtfract_metal
[]
[oxywtfract_total]
type = ElementalVariableValue
elementid = 0
variable = oxywtfract_total
[]
[]
[Outputs]
exodus = true
[]
(test/tests/fuel_pin_mesh_generator/dish_only.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
nx_chamfer = 0
nx_flat = 3
nx_dish = 5
chamfer_width = 0
chamfer_height = 1.6e-4
dish_depth = 3e-4
dish_radius = .002
pellet_mesh_density = customize
pellet_quantity = 1
use_legacy_block_ids = false
fuel_base_name = fuel
ny_p = 15
nx_c = 1
ny_cu = 1
ny_cl = 1
clad_mesh_density = customize
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[pellet_centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/LOCA_Studsvik/analysis/rod_196/Studsvik_196_part2.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
restart_file_base = 'Studsvik_196_part1_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[smeared_mesh]
type = FuelPinMeshGenerator
clad_top_gap_height = 0.0248576
pellet_height = 0.2606424
pellet_quantity = 1
clad_bot_gap_height = 0.0145
pellet_outer_radius = 3.92e-3
clad_gap_width = 80e-6
clad_thickness = 0.57e-3
clad_mesh_density = customize
pellet_mesh_density = customize
nx_c = 5
ny_c = 50
nx_p = 11
ny_p = 60
elem_type = QUAD8
[]
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
[]
[]
[AuxVariables]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxygen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0 86400 47386400 47472800 47559200 47645600 94945600 95032000'
y = '0.0065371 1 1 1 1 1 1 1 0.0065371'
scale_factor = 15.5e6
[]
[clad_surface_temperature]
type = PiecewiseBilinear
axis = 1
data_file = clad_temperature.csv
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_relocation_eigenstrain fuel_volumetric_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
temperature = temperature
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
temperature = temperature
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.05 0.95 0 0 0 0'
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = MaterialRealAux
boundary = 2
variable = scale_thickness
property = oxide_scale_thickness
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
boundary = 2
variable = burst_stress
property = burst_stress
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = 'fission_gas_released he_prod'
released_gas_types = 'Kr Xe;
He'
released_fractions = '0.153 0.847;
1'
quadrature = true
contact_pressure = contact_pressure
refab_gas_types = He
refab_fractions = 1
refab_time = 95032000
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 3.44738e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = 'fission_gas_released he_prod'
output = plenum_pressure
refab_time = 95032000
refab_pressure = 8.2e6
refab_temperature = 295.0
refab_volume = 1.04e-05
cladding_failure_status = burst
equilibrium_pressure = equilibrium_pressure
additional_volumes = additional_volume
temperature_of_additional_volumes = addition_temperature
[]
[]
[clad_temp]
type = FunctionDirichletBC
function = clad_surface_temperature
variable = temperature
boundary = 2
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
# [terminator]
# type = Terminator
# expression = 'burst > 0'
# []
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.00914 # 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'
[]
[]
[Materials]
[uo2_pulverization]
type = UO2Pulverization
block = pellet
layered_average_contact_pressure = contact_pressure
temperature = temperature
burnup_function = burnup
output_properties = pulverized
outputs = all
[]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = pellet
fragmentation_model = BARANI
rod_ave_lin_pow = power_history
temperature = temperature
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = pellet
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
fuel_pin_geometry = fuel_pin_geometry
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.024
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_eigenstrain
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
block = clad
type = ZryThermal
temperature = temperature
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temperature
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
# effective_strain_rate_creep = creep_strain_rate
# failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = stress_zz
hoop_creep_strain = creep_strain_zz
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = BoundingValueElementDamper
min_value = 290.0
max_value = 3000.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
# n_startup_steps = 1
end_time = 95033429.6
dtmax = 20
dtmin = 1e-6
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
timestep_limiting_function = forced_times
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fission_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[max_clad_hoop_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = strain_zz
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[he_prod]
type = IFBAHeProduction
b10_load = 9.27165354e-5
b10_enrich = 0.5
burnup = average_burnup
zrb2_thick = 10e-6
fuel_out_rad = 9.32e-3
ifba_len = 0.3
u235_enrich = 0.05
[]
[volume_pulverized]
type = ElementIntegralMaterialProperty
mat_prop = pulverized
block = pellet
[]
[max_fuel_temp_periphery]
type = NodalExtremeValue
value_type = max
variable = temperature
boundary = 10
[]
[additional_volume]
type = FunctionValuePostprocessor
function = 8.5e-6
execute_on = 'initial linear'
[]
[addition_temperature]
type = FunctionValuePostprocessor
function = 300.0
execute_on = 'initial linear'
[]
[equilibrium_pressure]
type = FunctionValuePostprocessor
function = 101325.0
execute_on = 'initial linear'
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[chkfile]
type = CSV
execute_on = FINAL
show = 'volume_pulverized'
[]
[]
(assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/1pt4MPa/25C_sec/25C_sec_Hardy_Tube_Test_1pt4MPa.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[gen]
type = FuelPinMeshGenerator
include_fuel = false
include_clad = true
pellet_outer_radius = 0.0072527
clad_gap_width = 0.0
clad_top_gap_height = 0.0
clad_bot_gap_height = 0.0
clad_thickness = 0.38e-3
pellet_height = 0.5
pellet_quantity = 1
clad_mesh_density = customize
nx_c = 2
ny_c = 50
elem_type = QUAD8
[]
[]
[Variables]
[temperature]
initial_condition = 600.0
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 40'
y = '1 1'
[]
[temp_function]
type = PiecewiseLinear
y = '600 1600'
[]
[temperature_profile]
type = PiecewiseBilinear
y = '0 40'
x = '0 0.25224 0.50448'
z = '0.995 1.01 0.995 0.995 1.01 0.995'
axis = 1
[]
[inner_temperature]
type = CompositeFunction
functions = 'temp_function temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
factor = 0.0
function = pressure_function
[]
[inner_surface]
boundary = 'clad_inside_right clad_inside_bottom clad_inside_top'
function = pressure_function
[]
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 1001
value = 0.0
[]
[x_fix]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
function = inner_temperature
variable = temperature
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[Materials]
[clad_thermal]
type = ZryThermal
block = clad
zry_thermal_properties_model = MATPRO
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = true
matpro_poissons_ratio = true
temperature = temperature
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = true
model_thermal_creep = true
temperature_loca_creep_begin = 840 # values from the report
temperature_standard_thermal_creep_end = 975
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 600.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-5
nl_abs_tol = 1.0e-8
start_time = 0
n_startup_steps = 1
end_time = 40
dtmax = 1
dtmin = 0.0000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 1.0
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = all_clad_interior
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = total_hoop_strain
[]
[max_disp_x]
type = NodalExtremeValue
block = clad
value_type = max
variable = disp_x
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[csv]
type = CSV
[]
[chkfile]
type = CSV
show = 'max_disp_x max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = false
[]
[]
(assessment/verification/Other/plenum_pressure/rz.i)
#
# Cavity Pressure Test
#
# This test is designed to compute an internal pressure based on
# p = n * R * T / V
# where
# p is the pressure
# n is the amount of material in the volume (moles)
# R is the universal gas constant
# T is the temperature
# V is the volume
#
# The mesh is composed of one block (2) with an interior cavity of volume 8.
# Block 1 sits in the cavity and has a volume of 1. Thus, the total
# initial volume is 7.
# The test adjusts T in the following way:
# T => T0 + beta * t
# with
# beta = T0
# T0 = 240.54443866068704
# V0 = 7
# n0 = f(p0)
# p0 = 100
# R = 8.314472 J * K^(-1) * mol^(-1)
#
# So, n0 = p0 * V0 / R / T0 = 100 * 7 / 8.314472 / 240.544439
# = 0.35
#
# At t = 1, p = 200.
#
[GlobalParams]
displacements = 'disp_r disp_z'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_outer_radius = 0.5
pellet_height = 1.2732395447351628
clad_gap_width = 0.5
clad_thickness = 0.5
bottom_clad_height = 0.5
top_clad_height = 0.5
clad_top_gap_height = 0.6366197723675814
clad_bot_gap_height = 0.6366197723675814
nx_p = 1
ny_p = 1
nx_c = 1
ny_c = 1
ny_cu = 1
ny_cl = 1
pellet_mesh_density = customize
clad_mesh_density = customize
[]
[]
[Functions]
[temperature]
type = PiecewiseLinear
x = '0 1'
y = '1 2'
scale_factor = 240.54443866068704
[]
[]
[Variables]
[disp_r]
[]
[disp_z]
[]
[temp]
initial_condition = 240.54443866068704
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
[]
[]
[Kernels]
[heat]
type = Diffusion
variable = temp
use_displaced_mesh = true
[]
[]
[BCs]
[no_x]
type = DirichletBC
variable = disp_r
boundary = '9 12'
value = 0.0
[]
[no_y]
type = DirichletBC
variable = disp_z
boundary = '9 12'
value = 0.0
[]
[temperatureInterior]
type = FunctionDirichletBC
boundary = 9
function = temperature
variable = temp
[]
[CavityPressure]
[1]
boundary = 9
initial_pressure = 100
R = 8.314472
temperature = aveTempInterior
volume = internalVolume
startup_time = 0.5
output = bison_ppress
[]
[]
[]
[Materials]
[elastic_tensor1]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.3
[]
[stress]
type = ComputeFiniteStrainElasticStress
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
nl_abs_tol = 1e-10
l_max_its = 20
dt = 1.0
end_time = 1.0
[]
[Postprocessors]
[internalVolume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
outputs = none
[]
[aveTempInterior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
outputs = none
[]
[analytical_ppress]
type = ParsedPostprocessor
pp_names = ''
constant_names = 'n0 T0 R V'
constant_expressions = '0.35 240.54443866068704 8.314472 7'
expression = 'T := 2*T0;
n0*R*T/V'
[]
[error]
type = ParsedPostprocessor
expression = '(bison_ppress-analytical_ppress)/analytical_ppress*100'
pp_names = 'bison_ppress analytical_ppress'
[]
[]
[Outputs]
csv = true
[]
(assessment/LWR/validation/RIA_CABRI_REP_Na/analysis/REP_Na_2D_Base_Irradiation_Option.i)
# REP Base irradiation 2D option file
clad_block_name = 1
fuel_block_name = 3
# GlobalParams options
displacements_option = 'disp_x disp_y'
# Mesh parameters
nx_p = 11
ny_cu = 3
ny_cl = 3
nx_c = 4
clad_bot_gap_height = 0.003 # m
bottom_clad_height = 0.0015 # m
top_clad_height = 0.0015 # m
patch_size = 40
# Cladding material properties
cold_work_factor = 0.5 # (-)
oxygen_concentration = 0.0
# Contact
normalize_contact_penalty_option = false
contact_penalty = 1e10 # (-)
normal_smoothing_distance = 0.1 # m
# BC parameters
coolantPressure_boundary = '1 2 3'
convective_clad_surface_boundary = '1 2 3'
PP_temperature = plenum_temperature
PP_volume = plenum_volume
# Eigenstrain names
fuel_volumetric_swelling_eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
fuel_thermal_expansion_eigenstrain_name = 'fuel_thermal_eigenstrain'
fuel_relocation_eigenstrain_name = 'fuel_relocation_eigenstrain'
clad_irradiation_swelling_eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
clad_thermal_expansion_eigenstrain_name = 'clad_thermal_eigenstrain'
# Materials parameters
fuel_elasticity_tensor_type = UO2ElasticityTensor
# Numerical options
damper_max_temperature_value = 3200 # K
damper_min_temperature_value = 200 # K
nl_abs_tol = 1e-10
TimeStepper_optimal_iterations = 100
TimeStepper_max_function_change = 1e6
# Postprocessor parameters
fis_gas_grain_type = ElementIntegralFisGasGrainSifgrs
fis_gas_boundary_type = ElementIntegralFisGasBoundarySifgrs
# Outputs options
color_option = true
chkfile_show = 'plenum_temperature fission_gas_released_percentage average_centerline_fuel_temperature average_burnup peak_RAE'
[GlobalParams]
density = ${initial_fuel_density}
volumetric_locking_correction = false
[]
[Mesh]
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = ${nx_p}
ny_p = ${ny_p}
ny_cu = ${ny_cu}
ny_c = ${ny_c}
ny_cl = ${ny_cl}
nx_c = ${nx_c}
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_quantity = ${pellet_quantity}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_bot_gap_height = ${clad_bot_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${bottom_clad_height}
top_clad_height = ${top_clad_height}
elem_type = QUAD8
[]
patch_size = ${patch_size}
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[SED]
order = CONSTANT
family = MONOMIAL
block = ${clad_block_name}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = ${fuel_block_name}
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
[]
[clad]
block = ${clad_block_name}
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz plastic_strain_xx plastic_strain_yy plastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx
elastic_strain_yy elastic_strain_zz hoop_stress'
[]
[]
[AuxKernels]
[total_hoop_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = total_hoop_strain
scalar_type = HoopStress
execute_on = timestep_end
block = ${clad_block_name}
[]
[total_axial_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = total_axial_strain
scalar_type = AxialStress
execute_on = timestep_end
block = ${clad_block_name}
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
normal_smoothing_distance = ${normal_smoothing_distance}
[]
[]
[ThermalContact]
[thermal_contact]
normal_smoothing_distance = ${normal_smoothing_distance}
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[]
[Materials]
[fuel_volumetric_swelling]
include_solid_swelling = true
include_densification = true
[]
[fission_gas_release]
transient_option = NO_TRANSIENT
[]
[clad_zrycreep]
zircaloy_material_type = stress_relief_annealed
[]
[clad_elasticity_tensor]
cold_work_factor = ${cold_work_factor}
oxygen_concentration = ${oxygen_concentration}
matpro_poissons_ratio = false
matpro_youngs_modulus = true
[]
[clad_zryplasticity]
oxygen_concentration = ${oxygen_concentration}
[]
[strain_energy_density]
type = StrainEnergyDensity
incremental = true
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = ${damper_max_temperature_value}
min_value = ${damper_min_temperature_value}
variable = temperature
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Postprocessors]
[gap_cond]
type = ElementalVariableValue
variable = gap_cond
elementid = ${gap_cond_elementid}
use_displaced_mesh = 1
[]
[creep_hoop_strain]
type = ElementalVariableValue
variable = creep_strain_zz
elementid = ${creep_hoop_strain_elementid}
use_displaced_mesh = 1
[]
[elastic_hoop_strain]
type = ElementalVariableValue
variable = elastic_strain_zz
elementid = ${elastic_hoop_strain_elementid}
use_displaced_mesh = 1
[]
[plastic_hoop_strain]
type = ElementalVariableValue
variable = plastic_strain_zz
elementid = ${plastic_hoop_strain_elementid}
use_displaced_mesh = 1
[]
[total_hoop_strain]
type = ElementalVariableValue
variable = total_hoop_strain
elementid = ${total_hoop_strain_elementid}
use_displaced_mesh = 1
[]
[clad_hoop_stress]
type = ElementalVariableValue
variable = hoop_stress
elementid = ${clad_hoop_stress_elementid}
use_displaced_mesh = 1
[]
[clad_axial_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${clad_axial_elongation_nodeid}
use_displaced_mesh = 1
[]
[clad_oxide_thickness]
type = ElementalVariableValue
variable = oxide_thickness
elementid = ${clad_oxide_thickness_elementid}
use_displaced_mesh = 1
[]
[clad_coolant_htc]
type = ElementalVariableValue
variable = clad_coolant_htc
elementid = ${clad_coolant_htc_elementid}
use_displaced_mesh = 1
[]
[coolant_temperature]
type = ElementalVariableValue
variable = coolant_temperature
elementid = ${coolant_temperature_elementid}
use_displaced_mesh = 1
[]
[fuel_axial_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = ${fuel_axial_elongation_nodeid}
[]
[clad_radial_elongation]
type = NodalVariableValue
variable = disp_x
nodeid = ${clad_radial_elongation_nodeid}
[]
[fuel_radial_elongation]
type = NodalVariableValue
variable = disp_x
nodeid = ${fuel_radial_elongation_nodeid}
[]
[SED_PPN_O]
type = ElementalVariableValue
variable = SED
elementid = ${SED_PPN_O_elementid}
use_displaced_mesh = 1
[]
[SED_PPN_I]
type = ElementalVariableValue
variable = SED
elementid = ${SED_PPN_I_elementid}
use_displaced_mesh = 1
[]
[OFract_PPN_O]
type = ElementalVariableValue
variable = oxywtfract_total
elementid = ${OFract_PPN_O_elementid}
use_displaced_mesh = 1
[]
[OGain_PPN_O]
type = ElementalVariableValue
variable = oxywtfgain_total
elementid = ${OGain_PPN_O_elementid}
use_displaced_mesh = 1
[]
#######################################
[max_clad_SED]
type = ElementExtremeValue
block = ${clad_block_name}
variable = SED
value_type = max
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temperature
radial_direction = x
axial_direction = y
axial_position = ${RAE_axial_position}
temperature_name = temperature
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temperature]
type = NodalValueSampler
block = ${fuel_block_name}
sort_by = y
variable = temperature
execute_on = timestep_end
outputs = 'outfile_radial_temperature'
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
[]
[Outputs]
[outfile_oxide_thickness]
type = CSV
file_base = '${id}_oxide_thickness_csv'
sync_times = ${outfile_oxide_thickness_sync_times}
sync_only = true
[]
[outfile_radial_temperature]
type = CSV
file_base = '${id}_radial_temperature_csv'
enable = false
[]
[checkpoint]
type = Checkpoint
num_files = 2
file_base = '${id}_recover_files'
sync_times = ${checkpoint_sync_times}
sync_only = true
[]
[exodus]
end_time = ${exodus_end_time}
[]
[exodus_RIA]
type = Exodus
file_base = '${id}_exodus_RIA'
time_step_interval = 2
start_time = ${RIA_start_time}
[]
[]
(assessment/nitride/JOYO/JOYO_L4C4/analysis/JOYO_Pin_base_action.i)
[GlobalParams]
order = FIRST
energy_per_fission = ${energy_per_fission}
displacements = 'disp_x disp_y'
value_range_behavior = IGNORE
temperature = temperature
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
converge_on = 'disp_x disp_y temperature'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${cladding_thickness}
pellet_outer_radius = ${fuel_radius}
pellet_height = ${fuel_height}
clad_top_gap_height = ${plenum_height}
clad_gap_width = ${cladding_gap_width}
bottom_clad_height = ${cladding_bottom_top_plug_length}
top_clad_height = ${cladding_bottom_top_plug_length}
clad_bot_gap_height = ${gap_bottom_length}
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = 3
ny_cl = 3
pellet_quantity = 1
elem_type = QUAD4
[]
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 ${time_end_ramp_up} ${time_start_ramp_down} ${time_end_ramp_down}'
y = '0 ${avg_lin_power} ${avg_lin_power} 0'
[]
[coolant_wall_temperature]
type = ParsedFunction
expression = 'if(t<${time_end_ramp_up}, ${initial_temperature} + t*(${a}*y^2 + ${b}*y + ${c} - ${initial_temperature})/(${time_end_ramp_up}),if(t<${time_start_ramp_down},${a}*y^2 + ${b}*y + ${c}, if(t<${time_end_ramp_down}, ${a}*y^2 + ${b}*y + ${c} + (t-${time_start_ramp_down})*(${initial_temperature}-(${a}*y^2 + ${b}*y + ${c}))/(${time_end_ramp_down}-${time_start_ramp_down}),${initial_temperature})))'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 ${run_time}'
y = '${coolant_pressure} ${coolant_pressure}'
[]
[plenum_pressure]
type = ConstantFunction
value = ${initial_plenum_pressure}
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 ${time_end_ramp_up} ${run_time}'
y = '0 ${fast_neutron_flux} ${fast_neutron_flux}'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '${pos_1} ${pos_2} ${pos_3} ${pos_4} ${pos_5} ${pos_6} ${pos_7} ${pos_8} ${pos_9} ${pos_10} ${pos_11} ${pos_12} ${pos_13} ${pos_14} ${pos_15} ${pos_16}'
y = '0 ${run_time}'
z = '${pow_1} ${pow_2} ${pow_3} ${pow_4} ${pow_5} ${pow_6} ${pow_7} ${pow_8} ${pow_9} ${pow_10} ${pow_11} ${pow_12} ${pow_13} ${pow_14} ${pow_15} ${pow_16} ${pow_1} ${pow_2} ${pow_3} ${pow_4} ${pow_5} ${pow_6} ${pow_7} ${pow_8} ${pow_9} ${pow_10} ${pow_11} ${pow_12} ${pow_13} ${pow_14} ${pow_15} ${pow_16}'
scale_factor = 1
axis = 1
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
block = 'pellet clad'
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5' # clad_inside_right
secondary_boundary = '10' # pellet_outer_radial_surface
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = 5 # clad_inside_right
secondary = 10 # pellet_outer_radial_surface
c_normal = 1e+11
correct_edge_dropping = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12' # centerline
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = '1' # clad_outside_bottom
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = '20' # bottom_of_bottom_pellet
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3' # clad_outside_bottom, clad_outside_right, clad_outside_top
function = coolant_press_ramp
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9 # inside_surfaces
initial_pressure = ${initial_plenum_pressure}
startup_time = 0
R = ${R}
initial_temperature = ${initial_temperature}
temperature = ave_temperature_interior # coupling to post processor to get gas temperature approximation
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
volume = gas_volume # coupling to post processor to get gas volume
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[clad_outer_temperature]
type = FunctionDirichletBC
boundary = '1 2 3' # clad_outside_bottom, clad_outside_right, clad_outside_top
function = coolant_wall_temperature
variable = temperature
[]
[]
[NuclearMaterials]
initial_temperature = ${initial_temperature}
fission_operation = 'Normal'
add_variables = true
physics = 'Mechanics Thermal'
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
decomposition_method = TaylorExpansion
volumetric_locking_correction = false
[UN]
[fuel]
block = pellet
strain = FINITE
density = ${density}
additional_generate_output = 'creep_strain_xx creep_strain_yy creep_strain_zz '
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${fuel_radius}
atoms_heavy_metal_per_volume = ${atoms_heavy_metal_per_volume}
automatic_eigenstrain_names = true
un_models = 'Burnup Elastic Creep ThermalExpansion'
properties_to_output = 'youngs_modulus poissons_ratio'
energy_deposited_in_fuel = 0.95
initial_porosity = ${initial_porosity}
stress_free_temperature = ${initial_temperature}
[]
[]
[SS316]
[clad]
block = clad
strain = FINITE
incremental = true
automatic_eigenstrain_names = true
ss316_models = 'Elastic ThermalExpansion Creep'
density_expression = '-4.454e-5*temperature^2 - 0.4297*temperature + 8089.4'
flux_function = fast_neutron_flux_function
stress_free_temperature = ${initial_temperature}
elastic_constants_model = legacy_ifr
[]
[]
[]
[Dampers]
[disp_x]
type = MaxIncrement
variable = disp_x
max_increment = 1e-4
min_damping = 1e-4
[]
[disp_y]
type = MaxIncrement
variable = disp_y
max_increment = 1e-3
min_damping = 1e-4
[]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
min_damping = 1e-4
[]
[]
[Executioner]
type = Transient
# With mortar contact
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-15'
snesmf_reuse_base = false
verbose = true
line_search = 'none'
l_max_its = 60
nl_max_its = 20
nl_rel_tol = 5e-6
nl_abs_tol = 5e-9
end_time = ${run_time}
dtmin = 1
dtmax = 5e4
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = time_step_limit
force_step_every_function_point = true
timestep_limiting_function = power_history
dt = 10
[]
[]
[Postprocessors]
# elemental temperatures
[temperature_fuel_avg]
type = ElementAverageValue
variable = temperature
block = pellet
execute_on = 'initial timestep_end'
[]
[temperature_fuel_max]
type = ElementExtremeValue
variable = temperature
block = pellet
[]
[temperature_fuel_min]
type = ElementExtremeValue
variable = temperature
block = pellet
value_type = min
[]
[temperature_clad_avg]
type = ElementAverageValue
variable = temperature
block = clad
execute_on = 'initial timestep_end'
[]
[temperature_clad_max]
type = ElementExtremeValue
variable = temperature
block = clad
[]
[temperature_clad_min]
type = ElementExtremeValue
variable = temperature
block = clad
value_type = min
[]
[ave_temperature_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = '9' # inside_surfaces
variable = temperature
execute_on = 'initial linear'
[]
[temperature_fuel_centerline_avg]
type = AxisymmetricCenterlineAverageValue
boundary = '12' # centerline
variable = temperature
[]
[temperature_fuel_centerline_max]
type = NodalExtremeValue
boundary = '12' # centerline
variable = temperature
[]
[temperature_fuel_centerline_min]
type = NodalExtremeValue
boundary = '12' # centerline
variable = temperature
value_type = min
[]
[temperature_fuel_surface_avg]
type = SideAverageValue
boundary = '10' # pellet_outer_radial_surface
variable = temperature
[]
[temperature_fuel_surface_max]
type = NodalExtremeValue
boundary = '10' # pellet_outer_radial_surface
variable = temperature
[]
[temperature_fuel_surface_min]
type = NodalExtremeValue
boundary = '10' # pellet_outer_radial_surface
variable = temperature
value_type = min
[]
# stresses
[stress_vonmises_fuel_avg]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[stress_vonmises_fuel_max]
type = ElementExtremeValue
variable = vonmises_stress
block = pellet
[]
[stress_vonmises_fuel_min]
type = ElementExtremeValue
variable = vonmises_stress
value_type = min
block = pellet
[]
[stress_hydro_fuel_avg]
type = ElementAverageValue
variable = hydrostatic_stress
block = pellet
[]
[stress_hydro_fuel_max]
type = ElementExtremeValue
variable = hydrostatic_stress
block = pellet
[]
[stress_hydro_fuel_min]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
# strain information
[strain_solid_swelling_fuel_avg]
type = ElementAverageValue
variable = solid_swelling
block = pellet
[]
[strain_volumetric_fuel_avg]
type = ElementAverageValue
variable = firstinv_strain
block = pellet
[]
[strain_axial_fuel_avg]
type = ParsedPostprocessor
pp_names = 'disp_y_fuel_top_surface_avg disp_y_fuel_bottom_surface_avg'
expression = '(disp_y_fuel_top_surface_avg - disp_y_fuel_bottom_surface_avg) / ${fuel_height}'
[]
[disp_y_fuel_top_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = '11' # top_of_top_pellet
[]
[disp_y_fuel_top_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = '11' # top_of_top_pellet
[]
[disp_y_fuel_bottom_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = '20' # bottom_of_bottom_pellet
[]
[disp_y_fuel_bottom_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = '20' # bottom_of_bottom_pellet
[]
[disp_x_fuel_radial_surface_max]
type = NodalExtremeValue
variable = disp_x
boundary = '10' # pellet_outer_radial_surface
[]
[disp_x_fuel_radial_surface_avg]
type = SideAverageValue
variable = disp_x
boundary = '10' # pellet_outer_radial_surface
[]
[burnup_avg]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[burnup_max]
type = ElementExtremeValue
block = pellet
variable = burnup
[]
[fission_rate_avg]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity_fuel_avg]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[porosity_fuel_max]
type = ElementExtremeValue
variable = porosity
block = pellet
[]
[porosity_fuel_min]
type = ElementExtremeValue
variable = porosity
value_type = min
block = pellet
[]
[swelling_dia_percent]
type = ParsedPostprocessor
pp_names = 'disp_x_fuel_radial_surface_avg'
expression = 'disp_x_fuel_radial_surface_avg / 3.14159 / ${fuel_radius} * 100'
[]
[fuel_volume]
type = VolumePostprocessor
block = pellet
execute_on = 'TIMESTEP_END INITIAL'
use_displaced_mesh = true
[]
[swelling_vol_percent]
type = ParsedPostprocessor
pp_names = 'fuel_volume'
expression = '(fuel_volume - ${fuel_volume}) / ${fuel_volume} * 100'
[]
[gas_volume]
type = InternalVolume
boundary = '9' # inside_surfaces
execute_on = 'initial linear'
[]
# extras
[actual_time_step_limit]
type = MaterialTimeStepPostprocessor
outputs = none
block = 'pellet'
[]
[time_step_limit]
type = ParsedPostprocessor
expression = 'if(actual_time_step_limit > 1e6, 1e6, actual_time_step_limit)'
pp_names = 'actual_time_step_limit'
[]
[]
[PerformanceMetricOutputs]
outputs = 'performance_metrics performance_metrics_sync exodus console base_out'
[]
[Outputs]
perf_graph = true
csv = true
sync_times = '1e2 1e3 5e3 1e4 5e4 1e5 5e5 1e6 2.5e6 5e6 1e7 2e7 ${fparse run_time -1e3} ${run_time}'
file_base = '${group_name}_nominal_Pin'
[base_out]
type = CSV
file_base = '${group_name}_Pin_base_action_out'
show = 'burnup_max temperature_fuel_avg temperature_clad_avg ave_temperature_interior swelling_vol_percent disp_x_fuel_radial_surface_max'
sync_only = true
[]
[checkpoint]
type = Checkpoint
time_step_interval = 10
[]
[exodus]
type = Exodus
[]
[sync]
type = CSV
file_base = '${group_name}_nominal_Pin_sync'
sync_only = true
[]
[console]
type = Console
show = 'time_step_size temperature_fuel_avg temperature_fuel_centerline_max stress_vonmises_fuel_max stress_hydro_fuel_max stress_hydro_fuel_min strain_axial_fuel_avg burnup_avg fission_rate_avg porosity_fuel_avg time_step_limit disp_x_fuel_radial_surface_max disp_x_fuel_radial_surface_avg swelling_dia_percent swelling_vol_percent fuel_volume'
[]
[performance_metrics]
type = CSV
file_base = '${group_name}_nominal_performance_metrics_Pin'
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[performance_metrics_sync]
type = CSV
sync_only = true
file_base = '${group_name}_nominal_performance_metrics_Pin_sync'
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temperature'
show_var_residual_norms = true
[]
(assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/3pt8MPa/25C_sec/25C_sec_Hardy_Tube_Test_3pt8MPa.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[gen]
type = FuelPinMeshGenerator
include_fuel = false
include_clad = true
pellet_outer_radius = 0.0072527
clad_gap_width = 0.0
clad_top_gap_height = 0.0
clad_bot_gap_height = 0.0
clad_thickness = 0.38e-3
pellet_height = 0.5
pellet_quantity = 1
clad_mesh_density = customize
nx_c = 2
ny_c = 50
elem_type = QUAD8
[]
[]
[Variables]
[temperature]
initial_condition = 600.0
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 40'
y = '1 1'
[]
[temp_function]
type = PiecewiseLinear
y = '600 1600'
[]
[temperature_profile]
type = PiecewiseBilinear
y = '0 40'
x = '0 0.25224 0.50448'
z = '0.995 1.01 0.995 0.995 1.01 0.995'
axis = 1
[]
[inner_temperature]
type = CompositeFunction
functions = 'temp_function temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
factor = 0.0
function = pressure_function
[]
[inner_surface]
boundary = 'clad_inside_right clad_inside_bottom clad_inside_top'
function = pressure_function
[]
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 1001
value = 0.0
[]
[x_fix]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
function = inner_temperature
variable = temperature
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[Materials]
[clad_thermal]
type = ZryThermal
block = clad
zry_thermal_properties_model = MATPRO
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = true
matpro_poissons_ratio = true
temperature = temperature
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = true
model_thermal_creep = true
temperature_loca_creep_begin = 840 # values from the report
temperature_standard_thermal_creep_end = 975
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 600.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-5
nl_abs_tol = 1.0e-8
start_time = 0
n_startup_steps = 1
end_time = 40
dtmax = 1
dtmin = 0.0000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 1.0
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = all_clad_interior
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = total_hoop_strain
[]
[max_disp_x]
type = NodalExtremeValue
block = clad
value_type = max
variable = disp_x
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[csv]
type = CSV
[]
[chkfile]
type = CSV
show = 'max_disp_x max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = false
[]
[]
(test/tests/zry_oxidation_cladding/adZryoxidation.i)
# This test demonstrates the usage of the model for cladding oxidation from
# normal operating to high temperature (accident) conditions, through the
# epri_kwu_ce, Leistikow, and Prater relations.
#
# The purpose of this input is to be a control for the FuelPinGeometry version
# to compare against and confirm the error checking through cli-args.
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
include_fuel = false
pellet_quantity = 1
pellet_height = 0.011143
pellet_outer_radius = 4.57e-3
clad_mesh_density = coarse
clad_gap_width = 70.0e-6
clad_thickness = 0.735e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.5e-3
top_clad_height = 2.5e-3
clad_top_gap_height = 5.0e-3
elem_type = QUAD4
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[Functions]
[Temp_func]
type = PiecewiseLinear
x = '0.0 100000000.0 100000010.0 100000100.0 100000110.0 100000200.0 100000210.0 100000300.0'
y = '600.0 600.0 1100.0 1100.0 1850.0 1850.0 1950.0 1950.0 '
[]
[FNFlux_func]
type = PiecewiseLinear
x = '0.0 100000300.0'
y = '1.0e+17 1.0e+17 '
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 600.0
[]
[disp_x]
order = FIRST
family = LAGRANGE
[]
[disp_y]
order = FIRST
family = LAGRANGE
[]
[]
[AuxVariables]
[fast_neutron_flux]
order = FIRST
family = LAGRANGE
initial_condition = 1.0e+17
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxyconc2_scale] # Oxygen concentration in ZrO2 scale (kg/m**2)
order = CONSTANT
family = MONOMIAL
[]
[oxyconc2_metal] # Oxygen concentration in metal (kg/m**2)
order = CONSTANT
family = MONOMIAL
[]
[oxyconc2_total] # Total oxygen concentration (oxide + metal) (kg/m**2)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_metal] # Oxygen weight fraction in metal (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Total oxygen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
strain = finite
use_automatic_differentiation = true
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
[]
[]
[AuxKernels]
[fnflux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
function = FNFlux_func
execute_on = timestep_begin
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 1
[]
[oconc_scale]
type = ADMaterialRealAux
variable = oxyconc2_scale
property = gained_oxygen_concentration_scale
boundary = 1
[]
[oconc_metal]
type = ADMaterialRealAux
variable = oxyconc2_metal
property = gained_oxygen_concentration_metal_wall
boundary = 1
[]
[oconc_total]
type = ADMaterialRealAux
variable = oxyconc2_total
property = gained_oxygen_concentration_total
boundary = 1
[]
[ofract_metal]
type = ADMaterialRealAux
variable = oxywtfract_metal
property = current_oxygen_weight_frac_metal_wall
boundary = 1
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 1
[]
[]
[BCs]
[bottom_T]
type = ADFunctionDirichletBC
variable = temp
function = Temp_func
boundary = 1
[]
[x_disp]
type = ADDirichletBC
variable = disp_x
value = 0
boundary = 1
[]
[y_disp]
type = ADDirichletBC
variable = disp_y
value = 0
boundary = 2
[]
[]
[Materials]
[elasticity_tensor]
type = ADZryElasticityTensor
block = 1
[]
[stress]
type = ADComputeFiniteStrainElasticStress
block = 1
[]
[thermal]
type = ADZryThermal
block = 1
temperature = temp
[]
[oxidation_zry]
type = ADZryOxidation
boundary = 1
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
l_tol = 1.0e-08
nl_abs_tol = 1.0e-08
nl_rel_tol = 1.0e-08
start_time = 0.0
num_steps = 5000
end_time = 100000300
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e+06
optimal_iterations = 6
iteration_window = 2
linear_iteration_ratio = 100
time_t = '0.0 100000000.'
time_dt = '1.0e+06 10.0 '
growth_factor = 1.0
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
[]
[temp]
type = NodalVariableValue
variable = temp
nodeid = 0
execute_on = 'initial timestep_end'
[]
[scale_thickness]
type = ElementalVariableValue
elementid = 0
variable = scale_thickness
[]
[oxyconc2_scale]
type = ElementalVariableValue
elementid = 0
variable = oxyconc2_scale
[]
[oxyconc2_metal]
type = ElementalVariableValue
elementid = 0
variable = oxyconc2_metal
[]
[oxyconc2_total]
type = ElementalVariableValue
elementid = 0
variable = oxyconc2_total
[]
[oxywtfract_metal]
type = ElementalVariableValue
elementid = 0
variable = oxywtfract_metal
[]
[oxywtfract_total]
type = ElementalVariableValue
elementid = 0
variable = oxywtfract_total
[]
[]
[Outputs]
exodus = true
[]
(examples/metal_fuel/X447_coarse/DP21_test.i)
# This tests UPuZrGaseousEigenstrainwithHotPressingPuSwelling, a swelling model for UPuZr metal fuel
# that allows for further expansion after UPuZrGaseousEignestrain has reached
# terminating porosity. Swelling is allowed to continue if the hydrostatic stress
# within the fuel is negative, and is allowed to shrink when the hydrostatic force
# exceeds the plenum pressure. Thermal stress and mechanical stress caused from FCMI
# is coupled in this example to provide a variable hydrostatic stress, which determines
# the creep rate within the fuel and compressibility of the fuel matrix.
#
# The swelling model is based on Eq. (13.146) in "Fundamental aspects of nuclear
# reactor fuel elements" by Olander.
#
# The fission gas that is released is based on an empirical model
# which states that once the gaseous swelling reaches a value of
# 0.33 (corresponding to a porosity of 0.24812), 80% of the fission gas so far
# produced is immediately released. After that, 100% of the gas produced is released.
# These values were changed to represent experimental EBR-II data within the gas_swelling block.
# For information regarding swelling and porosity, see the above reference or the
# following reference:
# Karahan A., Modeling of Thermo Mechanical and Irradiation Behavior of Metallic
# and Oxide Fuels for Sodium Fast Reactors, Thesis, Massachusetts Institute of Technology 2009.
initial_fuel_density = 15800
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11
displacements = 'disp_x disp_y'
X_Pu = 0.16029880703609925
X_Zr = 0.22566146557004974
temperature = temp
[]
[Problem]
type = AugmentedLagrangianContactProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
include_fuel = true
clad_thickness = 0.000381
pellet_outer_radius = 0.0021971
pellet_height = 0.34417
clad_top_gap_height = 0.3652172
clad_gap_width = 0.0003429
bottom_clad_height = 0.0127
top_clad_height = 0.0127
clad_bot_gap_height = 0.001
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 5
ny_p = 25
nx_c = 2
ny_c = 25
ny_cu = 2
ny_cl = 2
pellet_quantity = 1
elem_type = QUAD4
[]
patch_size = 60
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1000 1e4 1.05e4 4.9e4 5e4'
y = '0 1000 40000 39000 42000 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 3.9e7'
y = '151000.0 151000.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 10000 5.9e4 6e4'
y = '648 648 648 295'
[]
[flow_rate]
type = PiecewiseConstant
x = '0 3.899e7 3.9e7'
y = '5000 5000 5000'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = custom
custom_params = '0.87995117 1.10795043 -1.30983206 0.01018143'
pellet_length = 0.34417
pellet_y_start = 0.0137
[]
[axial_flux_peaking_factors]
type = PowerPeakingFunction
fit = custom
custom_params = '0.79140541 1.73120833 -2.13298844 0.2151691'
pellet_length = 0.34417
pellet_y_start = 0.0137
zero_beyond_top_and_bottom = False
[]
[flux_history]
type = PiecewiseLinear
x = '0 3.899e7 3.9e7'
y = '2.5e19 2.5e19 0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz volumetric_strain'
[fuel]
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.2
normalize_penalty = true
tangential_tolerance = 0.4
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 0.8
al_frictional_force_tolerance = 0.8
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 68.0
tangential_tolerance = 1e-4
min_gap = 0.0003429
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6
startup_time = 0
R = 8.3143
temperature = ave_temp_plenum
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
execute_on = timestep_end
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = flow_rate
coolant_material = sodium
rod_diameter = 0.005842
rod_pitch = 0.0069
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fuel_arr]
type = ArrheniusDiffusionCoef
block = pellet
d1 = 4.47e-8
q1 = 115002
d2 = 0
q2 = 0
gas_constant = 8.3143
[]
[fuel_soret]
type = GenericConstantMaterial
block = pellet
prop_names = Qheat
prop_values = 0.2072896
[]
[wastage_thickness]
type = MetallicFuelWastage
method = flux_ht9
burnup = burnup
temperature = temp
fast_neutron_flux = fast_neutron_flux
scale_factor = 1
boundary = 5
outputs = all
[]
[phase]
type = PhaseUPuZr
X_Pu = 0.16029880703609925
X_Zr = 0.22566146557004974
block = pellet
AB_temp = 965.15
CD_temp = 995.15
outputs = all
calc_H = false
[]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = 0.0021971
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = 0.22566146557004974
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
block = pellet
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-2
relative_tolerance = 1e-8
fission_rate=fission_rate
[]
[fuel_thermal_expansion]
type = UPuZrThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrainwithHotPressingPuSwelling
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.03185
bubble_number_density = 5e17
interconnection_initiating_porosity = 0.28
interconnection_terminating_porosity = 0.30
creep_rate = creep_rate
hydrostatic_stress = hydrostatic_stress
outputs = all
output_properties = 'porosity gaseous_porosity hot_pressing'
block = pellet
hotpress_scalar = 0.4
plenum_pressure = plenum_pressure
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_factor = 1.5
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
spheat_model = savage
thcond_model = billone
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fractional_yield = 0.25
critical_porosity = 0.29
fractional_fgr_initial = 0.4
fractional_fgr_post = 0.7354
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_creep'
block = clad
[]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
factor = 1
axial_power_profile = axial_flux_peaking_factors
rod_ave_lin_pow = flux_history
outputs = all
[]
[clad_creep]
type = HT9CreepUpdate
fast_neutron_flux = fast_neutron_flux
block = clad
temperature = temp
[]
[thermal_expansion]
type = HT9ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[clad_volumetric_swelling]
type = HT9VolumetricSwellingEigenstrain
eigenstrain_name = clad_volume_eigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
temperature = temp
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 5e-3
nl_abs_tol = 1e-5
end_time = 1000
dtmin = 1e-12
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
growth_factor = 2
cutback_factor = 0.01
iteration_window = 5
optimal_iterations = 20
force_step_every_function_point = true
timestep_limiting_function = power_history
time_t = '1e6'
time_dt = '1'
[]
[]
[Postprocessors]
[ave_temp_plenum]
type = SideAverageValue
boundary = 6
variable = temp
execute_on = 'initial linear'
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[gas_hot_pressing]
type = ElementAverageValue
execute_on = timestep_end
variable = hot_pressing
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[]
[Outputs]
exodus = true
perf_graph = true
csv = true
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[]
[Dampers]
[max_inc_damp_x]
type = MaxIncrement
max_increment = 3e-4
variable = disp_x
[]
[max_inc_damp_y]
type = MaxIncrement
max_increment = 3e-4
variable = disp_y
[]
[max_inc_temp]
type = MaxIncrement
max_increment = 25
variable = temp
[]
[]
(examples/fast_mox_sifgrs/input_single_pellet_sifgrs_mox.i)
#This input is is a simple example of FBR MOX fuel analysis.
#In this case we test the application of Sifgrs to FBR MOX using a specific setting for the lower limit of grain-boundary bubble number density.
initial_fuel_density = 10920.4
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temp
density = ${initial_fuel_density}
order = FIRST
family = LAGRANGE
energy_per_fission = 3.28451e-11
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
include_clad = false
clad_top_gap_height = 0.
pellet_quantity = 1
pellet_height = 0.01
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
nx_p = 10
ny_p = 5
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 683 #typical inlet temperature of the sodium
[]
[]
[AuxVariables]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bubble_GB]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0. 70000. 10000000. 10070000.'
y = '0. 35. 35. 0. '
scale_factor = 1000.
[]
[temp_surface]
type = PiecewiseLinear
x = '0. 70000. 10000000. 10070000.'
y = '683. 1000. 1000. 683. '
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0. 70000. 10000000. 10070000.'
y = '0.3 0.5 1.8 0.3 '
scale_factor = 1.e+6
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_zz'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.07
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[thermal_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bubble_GB
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = bottom_central_pellet_node
value = 0.
[]
[imposed_ext_temp]
type = FunctionDirichletBC
boundary = pellet_outer_radial_surface
variable = temp
function = temp_surface
[]
[top_pellet]
variable = temp
type = NeumannBC
value = 0.
boundary = top_of_top_pellet
[]
[bottom_pellet]
variable = temp
type = NeumannBC
value = 0.
boundary = bottom_of_bottom_pellet
[]
[Pressure]
[pressure]
boundary = pellet_outer_radial_surface
function = pressure_ramp
[]
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = 0.07
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet
burnup = burnup
total_densification = 0.1e-02
initial_fuel_density = 10920.4
gas_swelling_model_type = SIFGRS
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius_const = 8.01e-6
diff_coeff_option = TURNBULL_D1_4D2_4D3
bubble_gb_limit = 1.0e+11 #recommended value for fast MOX fuels
[]
[]
[Preconditioning]
[SMP]
type = SMP
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 1.e-08
nl_max_its = 15
nl_rel_tol = 1.e-4
nl_abs_tol = 1.e-10
start_time = 0.
end_time = 10070000
dtmax = 5e+05
dtmin = 1.
[TimeStepper]
type = IterationAdaptiveDT
growth_factor = 3.
dt = 1.e+02
timestep_limiting_function = power_history
max_function_change = 1000.
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = power_history
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
variable = temp
block = pellet
execute_on = 'initial timestep_end'
[]
[burnup_ave]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[burnup_ave_MWdkgU]
type = ScalePostprocessor
value = burnup_ave
scaling_factor = 950.
[]
[fission_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = linear
[]
[fission_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = linear
[]
[fgr_percent]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fission_gas_produced
execute_on = linear
[]
[bubble_num_grain_boundary_center]
type = ElementalVariableValue
variable = bbl_bdr_2
elementid = 21
[]
[bubble_num_grain_boundary_surface]
type = ElementalVariableValue
variable = bbl_bdr_2
elementid = 30
[]
[bubble_num_grain_boundary_min]
type = ElementExtremeValue
value_type = min
variable = bbl_bdr_2
block = pellet
[]
[swelling_grain_boundary_center]
type = ElementalVariableValue
variable = deltav_v0_bubble_GB
elementid = 21
[]
[swelling_grain_boundary_surface]
type = ElementalVariableValue
variable = deltav_v0_bubble_GB
elementid = 30
[]
[temp_fuel_center]
type = NodalVariableValue
variable = temp
nodeid = 23
[]
[temp_fuel_surface]
type = NodalVariableValue
variable = temp
nodeid = 32
[]
[_dt]
type = TimestepSize
execute_on = linear
[]
[nonlinear_its]
type = NumNonlinearIterations
execute_on = linear
[]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
[console]
type = Console
max_rows = 15
[]
[t]
type = Checkpoint
time_step_interval = 2
num_files = 2
[]
[]
(assessment/MOX/JOYO/MK-II/analysis/MK-II_master_old_bubble_gb_lim.i)
initial_fuel_density = 10920.4
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.07
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.55
pellet_outer_radius = 0.002315
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000085
clad_thickness = 0.00035
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.549
elem_type = QUAD8
nx_c = 4
ny_c = 100
nx_p = 10
ny_p = 100
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = '0 70000 12697021'
y = '0 48827.8 48827.8'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 70000 12697021'
y = '0 2.6e+19 2.6e+19'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0 0.065 0.134 0.202 0.271 0.339 0.406 0.519'
y = '0 12697021'
z = '0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672 0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = '0 70000 12697021'
y = '0 40000 40000'
[]
[clad_surface_temp]
type = PiecewiseBilinear
x = '0 0.065 0.134 0.202 0.271 0.339 0.406 0.519'
y = '0 12697021'
z = '295 295 295 295 295 295 295 295 416.36 422.49 428.63 434.27 439.36 444.71 450.07 455.48'
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.07
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.00463
execute_on = timestep_begin
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp_clad_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_surface_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 101325
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 300000
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10920.4
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
diff_coeff_option = TURNBULL_D1_4D2_4D3
fission_rate = fission_rate
grain_radius_const = 8.01e-6
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-2
fixed_point_rel_tol = 1e-2
fixed_point_max_its = 1
l_max_its = 70
l_tol = 8e-3
nl_max_its = 70
nl_rel_tol = 1e-2
nl_abs_tol = 1e-2
start_time = 0
n_startup_steps = 1
end_time = 12697021
dtmax = 2e5
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 5000
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.55 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = MK-II_sub_old_bubble_gb_lim.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'temp disp_x disp_y'
[]
(assessment/LWR/validation/HbepR1/analysis/H8364/HbepR1_H8364.i)
initial_fuel_density = 10490
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
temperature = temp
volumetric_locking_correction = false
[]
# Specify coordinate system type
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
# Set problem dimension (2d-rz here) and import mesh file
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.95e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .0049695
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.68
ny_cl = 3
clad_top_gap_height = 0.244325
clad_gap_width = 1.005e-4
elem_type = QUAD8
[]
patch_size = 100 # 1000 lowering this and setting the strategy to auto will reduce the amount of memory required to run the job.
patch_update_strategy = iteration #auto
partitioner = centroid # this will help with run time
centroid_partitioner_direction = y # this will help with run time
[]
# Define dependent variables, element order and shape function family, and initial conditions
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 273 #K
[]
[]
# Define auxillary variables, element order and shape function family
[AuxVariables]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 5.148e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[power_history]
type = PiecewiseConstant
data_file = H8364-power.csv
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = H8364-axial-profile.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '-100 0 166323600 166327200' #
y = '0.014429 1 1 0.014429'
[]
[temp_ramp]
type = PiecewiseBilinear
data_file = H8364-axial-tempprofile.csv
scale_factor = 1
axis = 1
[]
[]
# Specify that we need solid mechanics (divergence of stress)
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_relocation_eigenstrain fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress hydrostatic_stress'
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_irradiation_growth_eigenstrain
clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz creep_strain_xx
creep_strain_xy creep_strain_yy vonmises_stress creep_strain_zz'
[]
[]
# Define kernels for the various terms in the PDE system
[Kernels]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = 3 # fission rate applied to the fuel (block 2) only
fission_rate = fission_rate # coupling to the fission_rate aux variable
extra_vector_tags = 'ref'
[]
[]
# Define auxilliary kernels for each of the aux variables
[AuxKernels]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
factor = 1.6727e13 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = 1
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.68478
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0049695 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0139 .9861 0 0 0 0'
RPF = RPF
[]
[]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 1.1e-6
roughness_secondary = 3.5e-7
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
# Define boundary conditions
[BCs]
# pin pellets and clad along axis of symmetry (y)
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
# pin clad bottom in the axial direction (y)
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
# pin fuel bottom in the axial direction (y)
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
factor = 7.0e6 # Pa
function = pressure_ramp
[]
[]
[coolant_temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = temp_ramp
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 0.375e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
temperature = plenum_temperature # coupling to post processor to get gas temperature approximation
volume = plenum_volume # coupling to post processor to get gas volume
material_input = fission_gas_released # coupling to post processor to get fission gas added
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
displacements = 'disp_x disp_y'
[]
[]
[]
# Define material behavior models and input material property data
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
initial_porosity = 0.04
temperature = temp
burnup = burnup
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.00507
clad_outer_radius = 0.005865
use_coolant_channel = true
fast_neutron_flux = fast_neutron_flux
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
stress_free_temperature = 273
thermal_expansion_coeff = 10e-6
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
diameter = 0.009939 # fuel pellet diameter in meters
diametral_gap = 100.5e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = .049 # turn off relocation
relocation_activation1 = 5000
eigenstrain_name = 'fuel_relocation_eigenstrain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_inelastic_stressUpdate]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = RECRYSTALLIZATION_ANNEALED
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = clad_inelastic_stressUpdate
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 273
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[clad_irradiation_eigenstrain]
type = ZryIrradiationGrowthEigenstrain
block = 1
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = RECRYSTALLIZATION_ANNEALED
eigenstrain_name = 'clad_irradiation_growth_eigenstrain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10490
total_densification = .0043
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[UserObjects]
[integral_burnup] # Added the computation of the average fuel rod burnup
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = -100
end_time = 166327200
dtmax = 1e6
dtmin = 0.1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
# Fuel postprocessors
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
# Clad postprocessor (The rest are created with StandardLWRFuelRodOutputs)
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = true
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/benchmark/RIA_benchmark/analysis/RIA_benchmark.i)
# RIA Benchmark - Case 5 with full output in CSV
initial_fuel_density = 10531
[GlobalParams]
density = ${initial_fuel_density} # UO2 with 4% porosity
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_iterations = 20
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 10
ny_p = 40
ny_cu = 3
ny_c = 40
ny_cl = 3
nx_c = 5
clad_thickness = 5.7e-4
pellet_outer_radius = 4.13e-3
pellet_quantity = 10
pellet_height = 1e-2
clad_top_gap_height = 0.0186616493139897
clad_bot_gap_height = 0.0186616493139897
clad_gap_width = 0.0
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.15
[]
[]
[AuxVariables]
[plastic_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[clad_water_htc]
order = CONSTANT
family = MONOMIAL
[]
[clad_water_flux]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[burnup]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0
[]
[]
[Functions]
[power_history] # triangular pulse power history defined by benchmark
type = PiecewiseLinear
scale_factor = 1.0
xy_data = ' 0 0
10 0
20 0
30 0
40 0
50 0
60 0
70 0
80 0
90 0
100 0
100.0003 0.01
100.0006 0.02
100.0009 0.03
100.030 1
100.060 0
100.081 0
100.082 0
100.083 0
100.084 0
100.085 0
100.086 0
100.087 0
100.088 0
100.089 0
100.090 0
100.091 0
100.092 0
100.093 0
100.094 0
100.095 0
100.096 0
100.097 0
100.098 0
100.099 0
100.100 0
100.105 0
100.110 0
100.115 0
100.120 0
100.125 0
100.130 0
100.135 0
100.140 0
100.145 0
100.150 0
100.155 0
100.160 0
100.165 0
100.170 0
100.175 0
100.180 0
100.185 0
100.190 0
100.195 0
100.200 0
100.210 0
100.220 0
100.230 0
100.240 0
100.250 0
100.260 0
100.270 0
100.280 0
100.290 0
100.300 0
100.310 0
100.320 0
100.330 0
100.340 0
100.350 0
100.360 0
100.370 0
100.380 0
100.390 0
100.400 0
100.410 0
100.420 0
100.430 0
100.440 0
100.450 0
100.460 0
100.470 0
100.480 0
100.490 0
100.500 0
100.510 0
100.520 0
100.530 0
100.540 0
100.550 0
100.560 0
100.570 0
100.580 0
100.590 0
100.600 0
100.610 0
100.620 0
100.630 0
100.640 0
100.650 0
100.660 0
100.670 0
100.680 0
100.690 0
100.700 0
100.710 0
100.720 0
100.730 0
100.740 0
100.750 0
100.760 0
100.770 0
100.780 0
100.790 0
100.800 0
100.810 0
100.820 0
100.830 0
100.840 0
100.850 0
100.860 0
100.870 0
100.880 0
100.890 0
100.900 0
100.910 0
100.920 0
100.930 0
100.940 0
100.950 0
100.960 0
100.970 0
100.980 0
100.990 0
101.000 0
101.100 0
101.200 0
101.300 0
101.400 0
101.500 0
101.600 0
101.700 0
101.800 0
101.900 0
102.000 0
102.100 0
102.200 0
102.300 0
102.400 0
102.500 0
102.600 0
102.700 0
102.800 0
102.900 0
103.000 0
103.100 0
103.200 0
103.300 0
103.400 0
103.500 0
103.600 0
103.700 0
103.800 0
103.900 0
104.000 0
104.100 0
104.200 0
104.300 0
104.400 0
104.500 0
104.600 0
104.700 0
104.800 0
104.900 0
105.000 0
105.100 0
105.200 0
105.300 0
105.400 0
105.500 0
105.600 0
105.700 0
105.800 0
105.900 0
106.000 0
106.100 0
106.200 0
106.300 0
106.400 0
106.500 0
106.600 0
106.700 0
106.800 0
106.900 0
107.000 0
107.100 0
107.200 0
107.300 0
107.400 0
107.500 0
107.600 0
107.700 0
107.800 0
107.900 0
108.000 0
108.100 0
108.200 0
108.300 0
108.400 0
108.500 0
108.600 0
108.700 0
108.800 0
108.900 0
109.000 0
109.100 0
109.200 0
109.300 0
109.400 0
109.500 0
109.600 0
109.700 0
109.800 0
109.900 0
110 0
111 0
112 0
113 0
114 0
115 0
116 0
117 0
118 0
119 0
120 0
130 0
140 0
150 0
160 0
170 0
180 0
190 0
200 0'
[]
[pressure_ramp] # inlet coolant pressure evolution
type = PiecewiseLinear
scale_factor = 1.0
xy_data = '0 1e5
50 1.55e7
200 1.55e7'
[]
[temp_ramp] # inlet coolant temperature evolution
type = PiecewiseLinear
scale_factor = 1.0
xy_data = '0 293.15
50 553.15
200 553.15'
[]
[Fuel_CTE_function] #Fuel CTE as a function of temp from MATPRO data
type = PiecewiseLinear
scale_factor = 1.0
xy_data = ' 0 1.00005E-05
300 1.00005E-05
350 1.00005E-05
400 1.00015E-05
450 0.000010004
500 1.00091E-05
550 0.000010018
600 1.00321E-05
650 1.00522E-05
700 1.00791E-05
750 1.01131E-05
800 1.01544E-05
850 1.02028E-05
900 1.02577E-05
950 1.03187E-05
1000 0.000010385
1050 0.000010456
1100 1.05308E-05
1150 1.06087E-05
1200 1.06891E-05
1250 1.07712E-05
1300 1.08545E-05
1350 1.09384E-05
1400 1.10224E-05
1450 1.11061E-05
1500 1.11891E-05
1550 1.12712E-05
1600 1.13519E-05
1650 1.14311E-05
1700 1.15087E-05
1750 1.15844E-05
1800 0.000011658
1850 1.17297E-05
1900 1.17991E-05
1950 1.18664E-05
2000 1.19314E-05
2050 1.19942E-05
2100 1.20547E-05
2150 0.000012113
2200 1.21691E-05
2250 1.22229E-05
2300 1.22746E-05
2350 1.23242E-05
2400 1.23717E-05'
[]
[Clad_CTE_function] #Cladding CTE as a function of temp from MATPRO data
type = PiecewiseLinear
scale_factor = 1.0
xy_data = ' 0 0.00000495
300 0.00000495
350 0.00000495
400 0.00000495
450 0.00000495
500 0.00000495
550 0.00000495
600 0.00000495
650 0.00000495
700 0.00000495
750 0.00000495
800 0.00000495
850 0.00000495
900 0.00000495
950 0.00000495
1000 0.00000495
1050 0.00000495
1083 0.00000495
1100 4.76997E-06
1150 3.60423E-06
1200 2.2888E-06
1244 1.77904E-06
1250 1.81579E-06
1300 0.00000221
1350 2.56667E-06
1400 2.89091E-06
1450 3.18696E-06
1500 3.45833E-06
1550 0.000003708
1600 3.93846E-06
1650 4.15185E-06
1700 0.00000435
1750 4.53448E-06
1800 4.70667E-06
1850 4.86774E-06
1900 5.01875E-06
1950 5.16061E-06
2000 5.29412E-06
2050 0.00000542
2098 5.53426E-06'
[]
[YS_function] #Yield Strength as a function of temp from PNNL report
#Cold work = 0.5, Average oxygen concentration = 0, fast neutron fluence = 0
#Assumed constant strain rate of 0.01
type = PiecewiseLinear
scale_factor = 1.0
xy_data = ' 0 593425301.8
300 593425301.8
320 580674456.3
340 567078477.7
360 552695674.7
380 537584819.6
400 521805085.5
420 505428587.7
440 489716889.1
460 475582155.5
480 462727514.7
500 450878059.4
520 439778204.9
540 429188702.8
560 418888211.8
580 408677370.3
600 398362281.7
620 387769321.2
640 376741767.7
660 365140974.9
680 352847834.1
700 339764457.8
720 325816004.1
740 310952563.6
760 271786784.1
780 222194537.8
800 185377726.5
820 154173430.2
840 130199325.7
860 111396817.2
880 96362607.14
900 84120129.15
920 73977044.17
940 65434357.46
960 58127235.93
980 51785717.25
1000 46208150.84
1020 41242936.22
1040 36775756.82
1060 32720505.36
1080 29012718.16
1090 27273687.16
1100 26355024.23
1120 22442026.84
1140 18753365.2
1160 15296510.38
1180 12079785.07
1200 9113113.474
1220 6409493.205
1240 3988344.555
1250 2893569.671
1255 2377978.33
1260 2323366.884
1280 2116912.621
1300 1928475.009
1320 1756577.201
1340 1599841.384
1360 1456985.125
1380 1326817.541
1400 1208235.326'
[]
#############################
[cp_factor]
type = ConstantFunction
value = 1.0
[]
[total_energy] #total Joules of energy injected into fuel during the RIA pulse
type = ConstantFunction
value = 30000
[]
[FWMH] #Full Width at Mid Height of RIA pulse
type = ConstantFunction
value = 0.03
[]
[fuel_OR] #Fuel outer radius
type = ConstantFunction
value = 0.00413
[]
##########################
[heat_generation] #A factor to multiply the pulse history to get desired energy/gram into the fuel
type = ParsedFunction
expression = 'energy / (pi * fuelradius * fuelradius * height) / pulsewidth'
symbol_names = 'height energy pulsewidth fuelradius'
symbol_values = '0.1 zz_total_energy zz_FWMH zz_fuel_OR'
[]
[power_ramp] #Transient power pulse applied to the fuel as a uniform heat generation term (W/m^3)
type = CompositeFunction
functions = 'power_history heat_generation'
scale_factor = 1.0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_thermal_eigenstrain'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'stress_yy stress_zz vonmises_stress hoop_stress'
[]
[clad]
block = clad
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'stress_yy stress_zz plastic_strain_yy plastic_strain_zz elastic_strain_yy elastic_strain_zz strain_yy strain_zz vonmises_stress hoop_stress axial_stress'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = HeatSource
variable = temp
block = 'pellet'
function = power_ramp
value = 1.0
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[plastic_strain_mag]
type = MaterialRealAux
property = effective_plastic_strain
variable = plastic_strain_mag
block = clad
execute_on = timestep_end
[]
[clad_water_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = clad_water_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[clad_water_flux]
type = MaterialRealAux
property = output_heat_flux
variable = clad_water_flux
boundary = 2
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
model = coulomb
friction_coefficient = 100
formulation = tangential_penalty
normalize_penalty = true
penalty = 1e12
normal_smoothing_distance = 0.1
tangential_tolerance = 1e-3
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
emissivity_primary = 0.797698
emissivity_secondary = 0.325
roughness_secondary = 0.1e-6 #roughness specified in benchmark
roughness_primary = 0.1e-6
roughness_coef = 3.2
plenum_pressure = plenum_pressure
jump_distance_model = LANNING
contact_pressure = contact_pressure
normal_smoothing_distance = 0.1
quadrature = true
order = SECOND
[]
[]
[BCs]
[fixed_external_clad_temp]
type = FunctionDirichletBC
variable = temp
boundary = 1
function = temp_ramp
[]
[fixed_external_clad_temp_2]
type = FunctionDirichletBC
variable = temp
boundary = 3
function = temp_ramp
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_temperature = 293.15
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = representative_plenum_temperature_node
volume = plenum_volume
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
chf_correlation_type = 1 # EPRI
htc_correlation_type = 1 # Thom or McDonough... or Groenveld
boundary = '2'
variable = temp
coolant_material = 'water'
inlet_massflux = 3057.2 #kg/(m^2 s)
inlet_temperature = temp_ramp
inlet_pressure = pressure_ramp
compute_enthalpy = true
flow_area = 1.0731681e-4 #m^2
heated_diameter = 1.4536170e-2 #m
hydraulic_diameter = 5.6e-3 #m
heated_perimeter = 2.9530971e-2 #m
heat_transfer_mode = 0
number_axial_zone = 50
htc_scalef = 1
[]
[]
[Materials]
[density_fuel]
type = StrainAdjustedDensity
block = 'pellet'
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 'pellet'
temperature = temp
burnup = burnup
initial_porosity = 0.04
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
temperature = temp
block = pellet
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeInstantaneousThermalExpansionFunctionEigenstrain
block = pellet
temperature = temp
thermal_expansion_function = Fuel_CTE_function
stress_free_temperature = 293.15
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[density_clad]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temp
[]
[clad_youngs_modulus]
type = PiecewiseLinearInterpolationMaterial
block = clad
xy_data = ' 0 79375000000
300 79375000000
320 78280000000
340 77185000000
360 76090000000
380 74995000000
400 73900000000
420 72805000000
440 71710000000
460 70615000000
480 69520000000
500 68425000000
520 67330000000
540 66235000000
560 65140000000
580 64045000000
600 62950000000
620 61855000000
640 60760000000
660 59665000000
680 58570000000
700 57475000000
720 56380000000
740 55285000000
760 54190000000
780 53095000000
800 52000000000
820 50905000000
840 49810000000
860 48715000000
880 47620000000
900 46525000000
920 45430000000
940 44335000000
960 43240000000
980 42145000000
1000 41050000000
1020 39955000000
1040 38860000000
1060 37765000000
1080 36670000000
1090 36122500000
1100 36434621212
1120 37058863636
1140 37683106061
1160 38307348485
1180 38931590909
1200 39555833333
1220 40180075758
1240 40804318182
1250 41116439394
1255 41272500000
1260 41070000000
1280 40260000000
1300 39450000000
1320 38640000000
1340 37830000000
1360 37020000000
1380 36210000000
1400 35400000000'
property = clad_youngs_modulus
variable = temp
[]
[clad_elasticity_tensor]
type = ComputeVariableIsotropicElasticityTensor
block = clad
args = temp
youngs_modulus = clad_youngs_modulus
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
inelastic_models = 'plasticity'
tangent_operator = elastic
[]
[clad_thermal_expansion]
type = ComputeInstantaneousThermalExpansionFunctionEigenstrain
block = clad
temperature = temp
thermal_expansion_function = Clad_CTE_function
stress_free_temperature = 293.15
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = IsotropicPlasticityStressUpdate
block = clad
temperature = temp
hardening_constant = 2.5e9
yield_stress_function = YS_function
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = 3200
min_value = 200
variable = temp
[]
[contact_slip]
type = ContactSlipDamper
primary = 5
secondary = 10
min_damping_factor = 0.05
[]
[]
[Executioner]
type = Transient
line_search = 'none'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_max_its = 100
l_tol = 1e-4
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-8
start_time = 0
end_time = 200
dtmax = 10
dtmin = 1e-6
[TimeStepper]
type = IterationAdaptiveDT
dt = 10
force_step_every_function_point = true
timestep_limiting_function = power_history
max_function_change = 0.03
optimal_iterations = 25
iteration_window = 5
linear_iteration_ratio = 1000
growth_factor = 1.2
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[representative_plenum_temperature_node] #Temperature used for plenum gas, using a node slightly above where the fuel contacts the cladding
type = NodalVariableValue
variable = temp
nodeid = 771
execute_on = 'initial linear'
[]
[2_input_rod_power]
type = FunctionValuePostprocessor
function = power_history
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[3_fuel_centerline_temp]
type = NodalVariableValue
variable = temp
nodeid = 1643
execute_on = 'initial timestep_end'
[]
[4_fuel_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 1671
execute_on = 'initial timestep_end'
[]
[5_clad_inner_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 496
execute_on = 'initial timestep_end'
[]
[6_clad_outer_surface_temp]
type = NodalVariableValue
variable = temp
nodeid = 509
execute_on = 'initial timestep_end'
[]
[clad_axial_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = 900
execute_on = 'initial timestep_end'
[]
[fuel_axial_elongation]
type = NodalVariableValue
variable = disp_y
nodeid = 2311
execute_on = 'initial timestep_end'
[]
[clad_radial_elongation]
type = NodalVariableValue
variable = disp_x
nodeid = 496
execute_on = 'initial timestep_end'
[]
[fuel_radial_elongation]
type = NodalVariableValue
variable = disp_x
nodeid = 1671
execute_on = 'initial timestep_end'
[]
[clad_hoop_stress]
type = ElementalVariableValue
variable = hoop_stress
elementid = 149
execute_on = 'initial timestep_end'
[]
[clad_axial_stress]
type = ElementalVariableValue
variable = axial_stress
elementid = 149
execute_on = 'initial timestep_end'
[]
[total_hoop_strain]
type = ElementalVariableValue
variable = strain_zz
elementid = 149
execute_on = 'initial timestep_end'
[]
[total_axial_strain]
type = ElementalVariableValue
variable = strain_yy
elementid = 149
execute_on = 'initial timestep_end'
[]
[plastic_hoop_strain]
type = ElementalVariableValue
variable = plastic_strain_zz
elementid = 149
execute_on = 'initial timestep_end'
[]
[plastic_axial_strain]
type = ElementalVariableValue
variable = plastic_strain_yy
elementid = 149
execute_on = 'initial timestep_end'
[]
[elastic_hoop_strain]
type = ElementalVariableValue
variable = elastic_strain_zz
elementid = 149
execute_on = 'initial timestep_end'
[]
[elastic_axial_strain]
type = ElementalVariableValue
variable = elastic_strain_yy
elementid = 149
execute_on = 'initial timestep_end'
[]
############################
[gap_cond]
type = ElementalVariableValue
variable = gap_cond
elementid = 499
execute_on = 'initial timestep_end'
[]
[coolant_temp]
type = ElementalVariableValue
variable = coolant_temp
elementid = 149
execute_on = 'initial timestep_end'
[]
[clad_water_flux]
type = ElementalVariableValue
variable = clad_water_flux
elementid = 149
execute_on = 'initial timestep_end'
[]
[clad_water_htc]
type = ElementalVariableValue
variable = clad_water_htc
elementid = 149
execute_on = 'initial timestep_end'
[]
[qpoint_penetration]
type = ElementalVariableValue
variable = qpoint_penetration
elementid = 499
execute_on = 'initial timestep_end'
[]
[penetration]
type = NodalVariableValue
variable = penetration
nodeid = 1671
execute_on = 'initial timestep_end'
[]
[contact_pressure]
type = NodalVariableValue
variable = contact_pressure
nodeid = 1671
execute_on = 'initial timestep_end'
[]
[zz_fuel_OR]
type = FunctionValuePostprocessor
function = fuel_OR
execute_on = 'initial timestep_end'
[]
[zz_total_energy]
type = FunctionValuePostprocessor
function = total_energy
execute_on = 'initial timestep_end'
[]
[zz_FWMH]
type = FunctionValuePostprocessor
function = FWMH
execute_on = 'initial timestep_end'
[]
[zz_cp_factor]
type = FunctionValuePostprocessor
function = cp_factor
execute_on = 'initial timestep_end'
[]
[zzz_heat_generation]
type = FunctionValuePostprocessor
function = heat_generation
execute_on = 'initial timestep_end'
[]
[zzzz_power_ramp]
type = FunctionValuePostprocessor
function = power_ramp
execute_on = 'initial timestep_end'
[]
[zzzzz_RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0709016
temperature_name = temp
execute_on = 'initial timestep_end'
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = zzzzz_RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
outputs = dummy
execute_on = 'initial timestep_end'
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
rod_component = CLAD ## Request only clad components because fission gas models are not used in this input file
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
csv = true
exodus = true
color = false
[console]
type = Console
output_linear = true
max_rows = 10
[]
[dummy]
type = CSV
enable = false
[]
[chkfile]
type = CSV
show = 'plenum_temperature average_interior_clad_temperature plenum_volume peak_RAE'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM043/BFM043.i)
################################################################################
#
# Description: Calvert Cliffs BFM043
#
#
#
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM043_power.csv
# axial peaking factor file BFM043_axial_peaking.csv
# flux boundary condition file BFM043_fast_flux.csv
################################################################################
initial_fuel_density = 10386.93
[GlobalParams]
density = ${initial_fuel_density} #94.662 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.31834
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM043_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM043_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 179369250 179369610'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 179369250 179369610'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM043_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10386.93
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 179369610
dtmax = 2.5e5
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK2/FK02_action.i)
# This file was created using BIF with the following inputs:
# FK02.var - md5sum: 123016ae8f3283a45bae816a366f93b1
# ../pulse_rev1.tpl - md5sum: 8d6b8b4bce1dd830dea2d8522009e514
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.085711070864
initial_grain_radius = 5.96e-6
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
total_densification = 0.006
temperature = temperature
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.03481
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temperature'
[]
[AuxVariables]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 0.0473684210526 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseBilinear
data_file = RadialPowerProfile.csv
axis = 0
[]
[radial_burnup_profile]
type = PiecewiseBilinear
data_file = RadialBurnupProfile.csv
axis = 0
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[pelletid]
type = PelletIdAux
block = 3
fuel_pin_geometry = pin_geometry
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
contact_pressure = mechanical_normal_lm
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temperature]
type = DirichletBC
boundary = '1 2 3'
variable = temperature
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[NuclearMaterials]
generate_output = 'elastic_strain_xx elastic_strain_yy elastic_strain_zz
stress_xx stress_yy '
'stress_zz strain_xx strain_yy strain_zz vonmises_stress'
fission_operation = 'RIA'
physics = 'Mechanics Thermal'
strain = FINITE
incremental = true
add_variables = true
initial_temperature = 293
stress_free_temperature = 293
extra_vector_tags = 'ref'
[UO2]
[fuel]
block = 3
uo2_models = 'Elastic Burnup Swelling ThermalExpansion'
isotopes = 'U238 U235'
isotope_fractions = '0.961 0.039'
fuel_pin_geometry = pin_geometry
rod_ave_lin_pow = linear_heat_rate_profile
rpf_input = radial_power_profile
fuel_volume_ratio = 1
num_radial = 80
num_axial = 49
RIA_initial_burnup = initial_burnup
axial_power_profile = axial_peaking_factors
additional_generate_output = 'hydrostatic_stress'
[]
[]
[ZirconiumAlloy]
[clad]
block = 1
cladding_models = 'Elastic Creep Plasticity ThermalExpansion'
initial_fast_fluence = 8.40e25
flux_function = axial_flux
zircaloy_alloy_type = 4
cold_work_factor = 0.01
plasticity_model_type = MATPRO
matpro_poissons_ratio = true
matpro_youngs_modulus = true
material_output_properties = yield_stress
additional_generate_output = 'creep_strain_xx creep_strain_yy creep_strain_zz'
[]
[]
[]
[Materials]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temperature
fuel_pin_geometry = pin_geometry
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temperature
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temperature
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage '
'peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(test/tests/standard_metallic_outputs_action/x441_mini_fuel_rod.i)
[GlobalParams]
density = 15800.0
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
# Nominal Design Geometric Parameters (X441)
type = FuelPinMeshGenerator
clad_thickness = 0.38e-03
pellet_outer_radius = 2.195e-03
pellet_height = 3.4e-2
clad_top_gap_height = 2.7e-2
clad_gap_width = 0.345e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_bot_gap_height = 0.31e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 1
ny_p = 5
nx_c = 1
ny_c = 5
ny_cu = 1
ny_cl = 1
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 2
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 5e3'
y = '0 44722'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 5e3'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 5e3'
y = '298.0 648.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 343.0e-3
pellet_y_start = 8.1e-3
[]
[engr_radial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_rad / 2.195e-03'
symbol_values = 'max_fuel_radial_disp'
symbol_names = 'fuel_disp_rad'
[]
[engr_axial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_axial / 343.0e-3'
symbol_values = 'max_fuel_elongation'
symbol_names = 'fuel_disp_axial'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain
solid_swelling_eigenstrain'
extra_vector_tags = 'ref'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = 0.345e-3
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = 2.195e-03
X_Zr = 0.225
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = 0.225
density = 15800
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = 0.225
X_Pu = 0.0
block = pellet
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
interconnection_initiating_porosity = 0.23
interconnection_terminating_porosity = 0.25
anisotropic_factor = 0.4
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = 0.225
X_Pu = 0.0
spheat_model = savage
thcond_model = lanl
porosity = porosity
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 15800.0
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
critical_porosity = 0.24
fractional_fgr_initial = 0.8
fractional_fgr_post = 1.0
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 5e3
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e3
time_t = '0 1e4'
time_dt = '1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_clad_creep_strain_mag]
type = ElementExtremeValue
value_type = max
block = clad
variable = effective_creep_strain
[]
[max_fuel_radial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_xx
[]
[max_fuel_axial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_yy
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_fuel_radial_disp]
type = NodalExtremeValue
variable = disp_x
boundary = 'all_pellet_exterior'
[]
[engr_strain_fuel_radial]
type = FunctionValuePostprocessor
function = engr_radial_strain_fuel
[]
[engr_strain_fuel_axial]
type = FunctionValuePostprocessor
function = engr_axial_strain_fuel
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.05 0.0'
num_points = 300
sort_by = y
outputs = 'vec1'
[]
[]
[StandardMetallicFuelRodOutputs]
initial_pressure = 0.084e6 # Pa
fuel_pellet_blocks = 'pellet'
plenum_boundary_name = 'inside_surfaces'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
time_step_interval = 1
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3'
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_mini_fuel_rod_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fission_gas_released_percentage max_clad_hoop_creep max_clad_creep_strain_mag max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[vec1]
type = CSV
file_base = x441_mini_fuel_rod_vec1
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/ifba_he_production/doc/fill_gas_xenon.i)
#
# 2-D RZ One Pellet Test - Using Xenon as fill gas
#
# This test is of a single pellet with cladding and a specified initial
# pressure of Xe fill gas.
#
# This model results in a upper limit for the interior_temp due to the type of
# fill gas used.
#
[GlobalParams]
density = 10431.0 #95% TD (TD = 10980)
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 4
nx_p = 6
nx_c = 3
ny_cu = 3
ny_c = 4
ny_cl = 3
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
displacements = 'disp_x disp_y'
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = '3'
initial_condition = 5e-6 # must be the same as the initial value in Sifgr
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = '3'
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
# CoolantChannel requires this to have units while axial_peaking_factors must be normalized.
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 20e3 # 20 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[q] # this is for fuel_relocation
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[]
[SolidMechanics]
[solid]
temperature = temp
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
#convert W/m from power profile to fission/m**3-s
#calculated as 1/(energy_per_fission*area)
#using energy_per_fission = 3.2e-11, consistent with 200 MeV/fission
value = 5.3548e+14
fission_rate_function = q
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
# If you divide flux/power, you get this constant factor
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = '3'
variable = gas_swell
property = deltav_v0_bd
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = fis_gas_released
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_gas_types = Xe
initial_fractions = 1
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
# pin entire clad bottom in y
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
# pin fuel bottom in y
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
# pin fuel axis in x and z
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
startup_time = 0.0
material_input = fis_gas_released
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
displacements = 'disp_x disp_y'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_swelling]
type = VSwellingUO2
block = '3'
temperature = temp
burnup = burnup
gas_swelling_type = sifgrs
[]
[fuel_solid_mechanics_elastic]
type = Elastic
block = '3'
temperature = temp
youngs_modulus = 2.e11
poissons_ratio = 0.345
thermal_expansion = 10.0e-6
dep_matl_props = deltav_v0_bd
[]
[fission_gas_release]
type = Sifgrs
block = '3'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_solid_mechanics]
type = SolidModel
block = 1
temperature = temp
youngs_modulus = 7.5e10
poissons_ratio = 0.3
thermal_expansion = 5.0e-6
constitutive_model = clad_plasticity
[]
[clad_growth]
type = IrradiationGrowthZr4
block = 1
fast_neutron_fluence = fast_neutron_fluence
growth_direction = 1
[]
[clad_plasticity]
type = IsotropicPlasticity
block = 1
temperature = temp
yield_stress = 550e6
hardening_constant = 2.5e9
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 25.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x'
off_diag_column = 'disp_x'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 2.0e7 # Stop run before contact between pellet and clad occurs
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e5 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01 # change: length of fuel stack in meters (1 pellet height)
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[out]
type = CSV
delimiter = ' '
[]
[]
(assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim_DiffCoeff4.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.2
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9144
pellet_outer_radius = 2.794e-3
pellet_inner_radius = 6.985e-4
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 101.6e-6
clad_thickness = 0.5334e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.057
elem_type = QUAD8
nx_c = 4
ny_c = 1000
nx_p = 10
ny_p = 500
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
scaling = 1
[]
[]
[AuxVariables]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fraction_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 0.854004932 0.854004932'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 2.99513e+19 2.99513e+19'
[]
[axial_power_profile]
type = PiecewiseBilinear
x = '0.0334152 0.09468 0.1559448 0.2162952 0.27756 0.3388248 0.3991752 0.46044 0.5217048 0.5820552 0.64332 0.7045848 0.7649352 0.8262 0.8874648'
y = '0 31858942.74'
z = '5493.43832 7183.727034 29157.48031 34228.34646 37608.92388 40144.35696 41412.07349 42257.21785 41834.64567 39721.78478 37608.92388 33805.77428 28312.33596 4225.721785 2535.433071 5041.338583 6592.519685 26757.87402 31411.41732 34513.77953 36840.55118 38003.93701 38779.52756 38391.73228 36452.75591 34513.77953 31023.62205 25982.28346 3877.952756 2326.771654'
scale_factor = 1
axis = 1
[]
[average_power_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 24264.05646 24264.05646'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.2
axial_power_profile = axial_power_profile
rod_ave_lin_pow = fraction_history
pellet_diameter = 0.005588
execute_on = timestep_begin
pellet_inner_diameter = 0.001397
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 0.151e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 0.151e6
inlet_massflux = 1687.43
rod_diameter = 6.858e-3
rod_pitch = 1.7e-2
linear_heat_rate = fraction_history
axial_power_profile = axial_power_profile
coolant_material = sodium
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = 0.2
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
outputs = exodus
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
diff_coeff_option = TURNBULL_D1_4D2_4D3
grain_radius_const = 10e-06
bubble_gb_limit = 1.0e+11
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fast_neutron_flux]
type = GenericFunctionMaterial
block = clad
prop_names = fast_neutron_flux
prop_values = fast_neutron_flux_function
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 31858942.74
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = fraction_history
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.9144 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = fftf_fo2_L09_new_DiffCoeff4_chkfile
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK1/FK01_action.i)
# This file was created using BIF with the following inputs:
# FK01.var - md5sum: 123016ae8f3283a45bae816a366f93b1
# ../pulse_rev1.tpl - md5sum: 8d6b8b4bce1dd830dea2d8522009e514
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.085711070864
initial_grain_radius = 5.96e-6
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
volumetric_locking_correction = false
total_densification = 0.006
temperature = temperature
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.04298
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temperature'
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 0.0473684210526 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseBilinear
data_file = RadialPowerProfile.csv
axis = 0
[]
[radial_burnup_profile]
type = PiecewiseBilinear
data_file = RadialBurnupProfile.csv
axis = 0
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Kernels]
[gravity]
type = Gravity
block = '1 3'
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
gas_released = fission_gas_released # coupling to a postprocessor which supplies the fission gas addition
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temperature]
type = DirichletBC
boundary = '1 2 3'
variable = temperature
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[NuclearMaterials]
generate_output = 'elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz vonmises_stress'
fission_operation = 'RIA'
incremental = true
physics = 'Mechanics Thermal'
initial_temperature = 293
stress_free_temperature = 293
extra_vector_tags = 'ref'
strain = FINITE
[UO2]
[fuel]
block = 3
uo2_models = 'Burnup Elastic Swelling ThermalExpansion'
isotopes = 'U238 U235'
isotope_fractions = '0.961 0.039'
fuel_pin_geometry = pin_geometry
rod_ave_lin_pow = linear_heat_rate_profile
rpf_input = radial_power_profile
fuel_volume_ratio = 1
num_radial = 80
num_axial = 49
axial_power_profile = axial_peaking_factors
additional_generate_output = 'hydrostatic_stress'
[]
[]
[ZirconiumAlloy]
[clad]
block = 1
cladding_models = 'Elastic Creep Plasticity ThermalExpansion'
initial_fast_fluence = 8.40e25
zircaloy_alloy_type = 4
cold_work_factor = 0.01
plasticity_model_type = MATPRO
matpro_poissons_ratio = true
matpro_youngs_modulus = true
material_output_properties = yield_stress
additional_generate_output = 'creep_strain_xx creep_strain_yy creep_strain_zz'
[]
[]
[]
[Materials]
[strain_energy_density]
type = StrainEnergyDensity
block = 1
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temperature
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temperature
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temperature
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_intervals_with_coating.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
intervals = '0.01186 0.01186'
intervals_ny = '2 4'
ny_c_plenum = 12
ny_c_bot_gap = 6
coating_thickness = 1e-4
nx_coating = 2
nx_c = 4
ny_cl = 4
ny_cu = 4
clad_mesh_density = customize
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
exodus = true
[]
(test/tests/solid_mechanics/uo2_eigenstrains/uo2_relocation/relocation_only_smear.i)
# Smeared mesh pellet model for testing relocation recovery.
[GlobalParams]
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_mesh_density = 'customize'
clad_mesh_density = 'customize'
nx_p = 1
ny_p = 1
nx_c = 1
ny_c = 1
ny_cu = 1
ny_cl = 1
pellet_outer_radius = 0.0041
pellet_height = 0.01
clad_gap_width = 160e-6
clad_bot_gap_height = 1.27e-3
clad_thickness = 0.25e-3
bottom_clad_height = 1.0e-3
top_clad_height = 1.0e-3
plenum_fuel_ratio = 0.20
elem_type = 'QUAD4'
[]
[]
# Define dependent variables
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
# Define auxillary variables
[AuxVariables]
[burnup]
order = FIRST
family = LAGRANGE
[]
[interface_pressure]
order = CONSTANT
family = MONOMIAL
[]
[vonmises]
order = CONSTANT
family = MONOMIAL
[]
[hydrostatic_stress]
order = CONSTANT
family = MONOMIAL
[]
[]
# Define functions to control power and boundary conditions
[Functions]
[pressure_ramp]
type = PiecewiseLinear
x = '0 3600 7200'
y = '1 1 10.0'
[]
[plenum_pressure]
type = PiecewiseLinear
x = '0 7200'
y = '1 1'
[]
[power_profile]
type = PiecewiseLinear
x = '0 1.0'
y = '0 75459'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = '1'
[]
[burnup]
type = PiecewiseLinear
x = '0 1.0'
y = '0 0.010526'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = small
generate_output = 'stress_xx stress_yy stress_zz'
[pellet]
block = pellet
eigenstrain_names = relocation_eigenstrain
[]
[clad]
block = clad
[]
[]
[AuxKernels]
[burnup]
type = FunctionAux
variable = burnup
function = burnup
execute_on = linear
[]
[interface_pressure]
type = SpatialUserObjectAux
block = pellet
variable = interface_pressure
execute_on = nonlinear
user_object = avg_contact_pressure
[]
[vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = VonMisesStress
execute_on = timestep_end
[]
[hydrostatic_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hydrostatic_stress
scalar_type = Hydrostatic
execute_on = timestep_end
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e12
[]
[]
# Define boundary conditions
[BCs]
[no_x_fuel_cl]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
use_displaced_mesh = false
boundary = '1 2 3'
factor = 15.0e6
function = pressure_ramp # use the pressure_ramp function defined above
[]
[plenum1]
use_displaced_mesh = false
boundary = 9
factor = 0.1e6
function = plenum_pressure
[]
[]
[]
# Define material behavior models and input material property data
[Materials]
[fuel_density]
type = StrainAdjustedDensity
strain_free_density = 10963.0
block = pellet
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 1e11
poissons_ratio = 0.3
[]
[stress]
type = ComputeLinearElasticStress
block = pellet
[]
[relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup = burnup
diameter = 0.0082
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
relocation_model = ESCORE_modified
burnup_relocation_stop = 1.0e12
outputs = all
output_properties = 'relocation_strain'
eigenstrain_name = relocation_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[elasticity_tensor_clad]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[stress_clad]
type = ComputeLinearElasticStress
block = clad
[]
[]
[UserObjects]
[avg_contact_pressure]
type = LayeredSideAverage
variable = contact_pressure
direction = y
num_layers = 1
execute_on = nonlinear
boundary = 10
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
# controls for linear iterations
l_max_its = 50
l_tol = 1e-5
# controls for nonlinear iterations
nl_max_its = 30
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
# time control
start_time = 0
end_time = 1.0
dt = 0.025
[Quadrature]
order = fifth
side_order = seventh
[]
[]
# Define postprocessors (some are required as specified above; others are optional; many others are available)
[Postprocessors]
[_dt] # time step
type = TimestepSize
[]
[rod_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 0.0003049
[]
[reloc_strain_ave]
type = ElementalVariableValue
variable = relocation_strain
elementid = 5
[]
[contact_pressure]
type = SideAverageValue
variable = contact_pressure
boundary = 10
[]
[disp_x]
type = NodalVariableValue
nodeid = 13 # Global node id 14
variable = disp_x
[]
[]
# Define output file(s)
[Outputs]
csv = true
exodus = true
[console]
type = Console
max_rows = 25
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK6/FK06.i)
# This file was created using BIF with the following inputs:
# FK06/FK06.var - md5sum: 5a60c05af67ba840a89caacf70b852e2
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10310.8809782
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.0592261881186
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.045 0.955 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy '
'elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy '
'strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz '
'stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz '
'creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
block = '1 3'
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
initial_moles = initial_moles
initial_gas_types = 'He Ar'
initial_fractions = '0.25 0.75'
gas_released = fission_gas_released
contact_pressure = mechanical_normal_lm
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.1e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10310.8809782
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.0592261881186
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 1.30e26
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 1.30e26
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = '1 3'
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage '
'peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_with_coating.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
coating_thickness = 1e-4
nx_coating = 2
clad_mesh_density = customize
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[pellet_centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
exodus = true
[]
(test/tests/fuel_pin_mesh_generator/drilled.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
pellet_height = '12e-3 18e-3 12e-3'
pellet_quantity = '1 1 1'
pellet_inner_radius = '2.5e-3 0 2.5e-3'
pellet_outer_radius = 4.07e-3
clad_gap_width = 80e-6
clad_bot_gap_height = 3e-3
clad_top_gap_height = 3e-3
clad_thickness = 0.6e-3
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 11
ny_p = '2 3 1'
use_legacy_block_ids = false
ny_c = 8
ny_cu = 1
ny_cl = 1
nx_c = 2
bx_p = 0.75
elem_type = QUAD8
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
[]
[pellet_inner_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_inner_radial_surface
value = 1
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFG092/BFG092.i)
################################################################################
#
# Description: Calvert Cliffs BFG092
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFG092_power.csv
# axial peaking factor file BFG092_axial_peaking.csv
# flux boundary condition file BFG092_fast_flux.csv
#
################################################################################
initial_fuel_density = 10411.07
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.28354
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFG092_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFG092_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 177711767 177712127'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 177711767 177712127'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFG092_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temp
max_value = 3200
min_value = 273
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 177712127
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/nitride/PW-CANEL/SNAP50/analysis/PW_SNAP50_UN_Pin_base_action.i)
[GlobalParams]
order = FIRST
energy_per_fission = ${energy_per_fission}
displacements = 'disp_x disp_y'
value_range_behavior = IGNORE
temperature = temperature
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
converge_on = 'disp_x disp_y temperature'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${cladding_liner_thickness}
pellet_outer_radius = ${fuel_radius}
pellet_height = ${fuel_height}
clad_top_gap_height = ${plenum_height}
clad_gap_width = ${cladding_gap_width}
bottom_clad_height = ${cladding_bottom_top_plug_length}
top_clad_height = ${cladding_bottom_top_plug_length}
clad_bot_gap_height = ${gap_bottom_length}
liner_thickness = ${liner_thickness}
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = 3
ny_cl = 3
nx_liner = 2
pellet_quantity = 1
elem_type = QUAD4
[]
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 ${time_end_ramp_up} ${time_start_ramp_down} ${time_end_ramp_down}'
y = '0 ${avg_lin_power} ${avg_lin_power} 0'
[]
[coolant_wall_temperature]
type = ParsedFunction
expression = 'if(t<${time_end_ramp_up}, ${initial_temperature} + t*(${a}*(y-${x_0})^2 + ${b} - ${initial_temperature})/(${time_end_ramp_up}),if(t<${time_start_ramp_down},${a}*(y-${x_0})^2 + ${b}, if(t<${time_end_ramp_down}, ${a}*(y-${x_0})^2 + ${b} + (t-${time_start_ramp_down})*(${initial_temperature}-(${a}*(y-${x_0})^2 + ${b}))/(${time_end_ramp_down}-${time_start_ramp_down}),${initial_temperature}))) '
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 ${run_time}'
y = '${coolant_pressure} ${coolant_pressure}' # unknown, Li coolant
[]
[plenum_pressure]
type = ConstantFunction
value = ${initial_plenum_pressure}
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
block = 'pellet liner clad'
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5' # clad_inside_right
secondary_boundary = '10' # pellet_outer_radial_surface
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = 5 # clad_inside_right
secondary = 10 # pellet_outer_radial_surface
c_normal = 1e+11
correct_edge_dropping = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12' # centerline
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = '1' # clad_outside_bottom
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = '20' # bottom_of_bottom_pellet
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3' # clad_outside_bottom, clad_outside_right, clad_outside_top
function = coolant_press_ramp
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9 # inside_surfaces
initial_pressure = ${initial_plenum_pressure}
startup_time = 0
R = ${R}
initial_temperature = ${initial_temperature}
temperature = ave_temperature_interior # coupling to post processor to get gas temperature approximation
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
volume = gas_volume # coupling to post processor to get gas volume
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[clad_outer_temperature]
type = FunctionDirichletBC
boundary = '1 2 3' # clad_outside_bottom, clad_outside_right, clad_outside_top
function = coolant_wall_temperature
variable = temperature
[]
[]
[NuclearMaterials]
initial_temperature = ${initial_temperature}
fission_operation = 'HighBurnup'
add_variables = true
physics = 'Mechanics Thermal'
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
decomposition_method = TaylorExpansion
volumetric_locking_correction = false
[UN]
[fuel]
block = pellet
strain = FINITE
density = ${density}
additional_generate_output = 'creep_strain_xx creep_strain_yy creep_strain_zz '
rod_linear_power = power_history
axial_power_profile = 1
pellet_radius = ${fuel_radius}
atoms_heavy_metal_per_volume = ${atoms_heavy_metal_per_volume}
automatic_eigenstrain_names = true
un_models = 'Burnup Elastic Creep ThermalExpansion'
properties_to_output = 'youngs_modulus poissons_ratio'
energy_deposited_in_fuel = 0.95
initial_porosity = ${initial_porosity}
stress_free_temperature = ${stress_free_temperature_MN}
[]
[]
[Tungsten]
[liner]
block = liner
strain = FINITE
incremental = true
automatic_eigenstrain_names = true
Tungsten_models = 'Elastic ThermalExpansion'
stress_free_temperature = ${stress_free_temperature_W}
[]
[]
[NbZr] # PWC11
[clad]
block = clad
strain = FINITE
incremental = true
automatic_eigenstrain_names = true
NbZr_models = 'Elastic ThermalExpansion'
stress_free_temperature = ${stress_free_temperature_NbZr}
[]
[]
[]
[Dampers]
[disp_x]
type = MaxIncrement
variable = disp_x
max_increment = 1e-4
min_damping = 1e-4
[]
[disp_y]
type = MaxIncrement
variable = disp_y
max_increment = 1e-3
min_damping = 1e-4
[]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
min_damping = 1e-4
[]
[]
[Executioner]
type = Transient
# With mortar contact
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-15'
snesmf_reuse_base = false
line_search = 'none'
l_max_its = 60
nl_max_its = 20
nl_rel_tol = 5e-6
nl_abs_tol = 5e-9
end_time = ${run_time}
dtmin = 1
dtmax = 5e4
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = time_step_limit
force_step_every_function_point = true
timestep_limiting_function = power_history
dt = 10
[]
[]
[Postprocessors]
# elemental temperatures
[temperature_fuel_avg]
type = ElementAverageValue
variable = temperature
block = pellet
execute_on = 'initial timestep_end'
[]
[temperature_fuel_max]
type = ElementExtremeValue
variable = temperature
block = pellet
[]
[temperature_fuel_min]
type = ElementExtremeValue
variable = temperature
block = pellet
value_type = min
[]
[temperature_clad_avg]
type = ElementAverageValue
variable = temperature
block = clad
execute_on = 'initial timestep_end'
[]
[temperature_clad_max]
type = ElementExtremeValue
variable = temperature
block = clad
[]
[temperature_clad_min]
type = ElementExtremeValue
variable = temperature
block = clad
value_type = min
[]
[temperature_liner_avg]
type = ElementAverageValue
variable = temperature
block = liner
execute_on = 'initial timestep_end'
[]
[temperature_liner_max]
type = ElementExtremeValue
variable = temperature
block = liner
[]
[temperature_liner_min]
type = ElementExtremeValue
variable = temperature
block = liner
value_type = min
[]
[ave_temperature_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = '9' # inside_surfaces
variable = temperature
execute_on = 'initial linear'
[]
[temperature_fuel_centerline_avg]
type = AxisymmetricCenterlineAverageValue
boundary = '12' # centerline
variable = temperature
[]
[temperature_fuel_centerline_max]
type = NodalExtremeValue
boundary = '12' # centerline
variable = temperature
[]
[temperature_fuel_centerline_min]
type = NodalExtremeValue
boundary = '12' # centerline
variable = temperature
value_type = min
[]
[temperature_fuel_surface_avg]
type = SideAverageValue
boundary = '10' # pellet_outer_radial_surface
variable = temperature
[]
[temperature_fuel_surface_max]
type = NodalExtremeValue
boundary = '10' # pellet_outer_radial_surface
variable = temperature
[]
[temperature_fuel_surface_min]
type = NodalExtremeValue
boundary = '10' # pellet_outer_radial_surface
variable = temperature
value_type = min
[]
# stresses
[stress_vonmises_fuel_avg]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[stress_vonmises_fuel_max]
type = ElementExtremeValue
variable = vonmises_stress
block = pellet
[]
[stress_vonmises_fuel_min]
type = ElementExtremeValue
variable = vonmises_stress
value_type = min
block = pellet
[]
[stress_hydro_fuel_avg]
type = ElementAverageValue
variable = hydrostatic_stress
block = pellet
[]
[stress_hydro_fuel_max]
type = ElementExtremeValue
variable = hydrostatic_stress
block = pellet
[]
[stress_hydro_fuel_min]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
# strain information
[strain_solid_swelling_fuel_avg]
type = ElementAverageValue
variable = solid_swelling
block = pellet
[]
[strain_volumetric_fuel_avg]
type = ElementAverageValue
variable = firstinv_strain
block = pellet
[]
[strain_axial_fuel_avg]
type = ParsedPostprocessor
pp_names = 'disp_y_fuel_top_surface_avg disp_y_fuel_bottom_surface_avg'
expression = '(disp_y_fuel_top_surface_avg - disp_y_fuel_bottom_surface_avg) / ${fuel_height}'
[]
[disp_y_fuel_top_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = '11' # top_of_top_pellet
[]
[disp_y_fuel_top_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = '11' # top_of_top_pellet
[]
[disp_y_fuel_bottom_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = '20' # bottom_of_bottom_pellet
[]
[disp_y_fuel_bottom_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = '20' # bottom_of_bottom_pellet
[]
[disp_x_fuel_radial_surface_max]
type = NodalExtremeValue
variable = disp_x
boundary = '10' # pellet_outer_radial_surface
[]
[disp_x_fuel_radial_surface_avg]
type = SideAverageValue
variable = disp_x
boundary = '10' # pellet_outer_radial_surface
[]
[burnup_avg]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[burnup_max]
type = ElementExtremeValue
block = pellet
variable = burnup
[]
[fission_rate_avg]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity_fuel_avg]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[porosity_fuel_max]
type = ElementExtremeValue
variable = porosity
block = pellet
[]
[porosity_fuel_min]
type = ElementExtremeValue
variable = porosity
value_type = min
block = pellet
[]
[swelling_dia_percent]
type = ParsedPostprocessor
pp_names = 'disp_x_fuel_radial_surface_avg'
expression = 'disp_x_fuel_radial_surface_avg / 3.14159 / ${fuel_radius} * 100'
[]
[fuel_volume]
type = VolumePostprocessor
block = pellet
execute_on = 'TIMESTEP_END INITIAL'
use_displaced_mesh = true
[]
[swelling_vol_percent]
type = ParsedPostprocessor
pp_names = 'fuel_volume'
expression = '(fuel_volume - ${fuel_volume}) / ${fuel_volume} * 100'
[]
[gas_volume]
type = InternalVolume
boundary = '9' # inside_surfaces
execute_on = 'initial linear'
[]
# extras
[actual_time_step_limit]
type = MaterialTimeStepPostprocessor
outputs = none
block = 'pellet'
[]
[time_step_limit]
type = ParsedPostprocessor
expression = 'if(actual_time_step_limit > 1e6, 1e6, actual_time_step_limit)'
pp_names = 'actual_time_step_limit'
[]
[]
[PerformanceMetricOutputs]
outputs = 'performance_metrics performance_metrics_sync exodus console base_out'
[]
[Outputs]
perf_graph = true
csv = true
sync_times = '1e2 1e3 5e3 1e4 5e4 1e5 5e5 1e6 2.5e6 5e6 1e7 2e7 3e7 ${fparse run_time -1e3} ${run_time}'
file_base = '${group_name}_nominal_Pin'
[base_out]
type = CSV
file_base = '${group_name}_Pin_base_action_out'
show = 'burnup_max temperature_fuel_avg temperature_clad_avg temperature_liner_avg ave_temperature_interior swelling_vol_percent disp_x_fuel_radial_surface_max'
sync_only = true
[]
[checkpoint]
type = Checkpoint
time_step_interval = 10
[]
[exodus]
type = Exodus
[]
[sync]
type = CSV
file_base = '${group_name}_nominal_Pin_sync'
sync_only = true
[]
[console]
type = Console
show = 'time_step_size temperature_fuel_avg temperature_fuel_centerline_max stress_vonmises_fuel_max stress_hydro_fuel_max stress_hydro_fuel_min strain_axial_fuel_avg burnup_avg fission_rate_avg porosity_fuel_avg time_step_limit disp_x_fuel_radial_surface_max disp_x_fuel_radial_surface_avg swelling_dia_percent swelling_vol_percent fuel_volume'
[]
[performance_metrics]
type = CSV
file_base = '${group_name}_nominal_performance_metrics_Pin'
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[performance_metrics_sync]
type = CSV
sync_only = true
file_base = '${group_name}_nominal_performance_metrics_Pin_sync'
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temperature'
show_var_residual_norms = true
[]
(assessment/LWR/validation/LOCA_ANL_cladding_burst_tests/analysis/OCL11/OCL11_aniso.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.270
pellet_outer_radius = 4.78e-3
clad_bot_gap_height = 0.001
clad_top_gap_height = 0.013
clad_thickness = 0.71e-3
clad_gap_width = 0.1e-3
pellet_mesh_density = coarse
clad_mesh_density = coarse
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
initial_condition = 300.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0 496.02 520.74 528.12 545.94 551.28 671.52 885.3 1195.74 1410.36 1657.86 1680 1690 1700 1710 1720 1730 1740 1750 1760 1770 1780 1790 1800 1810 1820 1830 1840 1848'
y = '300 300 405.465 482.048 583.351 632.287 634.297 632.825 630.378 631.059 632.59 633 683 733 783 833 883 933 983 1033 1083 1133 1183 1233 1283 1333 1383 1433 1477'
[]
[temperature_profile]
type = PiecewiseBilinear
data_file = 'temp_profile.csv'
axis = 1
[]
[cladding_temperature]
type = CompositeFunction
functions = 'temperature_func temperature_profile'
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuelcladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.57 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.45 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.48 0.48'
[]
[L]
type = PiecewiseLinear
x = '-1000 10000'
y = '1.0 1.0'
[]
[M]
type = PiecewiseLinear
x = '-1000 10000'
y = '1.0 1.0'
[]
[N]
type = PiecewiseLinear
x = '-1000 10000'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
use_automatic_differentiation = true
add_variables = true
strain = FINITE
decomposition_method = TaylorExpansion
eigenstrain_names = 'fuel_thermal_strain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
use_automatic_differentiation = true
add_variables = true
strain = FINITE
decomposition_method = TaylorExpansion
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[burst]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = ADMaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = ADMaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = clad
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = clad_outside_right
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = clad_outside_right
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = clad_outside_right
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
primary = 5
secondary = 10
variable = temperature
gap_conductivity = 0.15 # k of He per Netzsch
[]
[]
[BCs]
[clad_surface_temperature]
type = ADFunctionDirichletBC
variable = temperature
boundary = '2'
function = cladding_temperature
[]
[no_x_all]
type = ADDirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = ADDirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = ADDirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[outer_pressure]
boundary = '1 2 3'
factor = 101325
[]
[inner_pressure]
boundary = '4 5 6'
factor = 8.28e6
[]
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.0
inlet_pressure = 101325
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 0.01118
rod_pitch = 1.26e-02 # default
oxide_thickness = scale_thickness
thermal_conductivity = reg_thermal_conductivity
[]
[]
[Materials]
[fuel_thermal]
type = ADHeatConductionMaterial
block = pellet
thermal_conductivity = 3.5
specific_heat = 330.0
[]
[fuel_converter]
type = MaterialADConverter
block = pellet
ad_props_in = 'thermal_conductivity'
reg_props_out = 'reg_thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ADComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ADComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_density]
type = ADStrainAdjustedDensity
block = pellet
strain_free_density = 10980.0 #perfectly dense UO2
[]
[clad_thermal]
type = ADZryThermal
block = clad
temperature = temperature
[]
[clad_converter]
type = MaterialADConverter
block = clad
ad_props_in = 'thermal_conductivity'
reg_props_out = 'reg_thermal_conductivity'
[]
[clad_elasticity_tensor]
type = ADZryElasticityTensor
block = clad
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
[]
[hill_constants]
type = ADHillConstants
#hill_constants = "0.5 0.5 0.5 1.0 1.0 1.0"
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
[]
[clad_zrycreep]
type = ADZryAnisoCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_loca_creep_begin = 501
temperature_standard_thermal_creep_end = 500
fract_beta_phase_name = 'ad_fract_beta_phase'
[]
[thermal_expansion]
type = ADZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = ADStrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[phase_converter]
type = MaterialADConverter
block = clad
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[oxidation]
type = ADZryOxidation
boundary = clad_outside_right
temperature = temperature
clad_inner_radius = 4.88e-3 #checked
clad_outer_radius = 5.59e-3 #checked
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfgain_total
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-04
nl_abs_tol = 1.0e-08
start_time = 0
n_startup_steps = 1
end_time = 1800.0
dtmax = 100
dtmin = 0.0001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10.0
time_dt = '100 10'
time_t = '10 400'
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = clad
value_type = max
variable = fract_beta_phase
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[oxide_thickness]
type = ElementAverageValue
block = clad
variable = scale_thickness
execute_on = TIMESTEP_END
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'max_clad_temp max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
[]
[]
(assessment/MOX/JOYO/B14/PTM001/analysis/b14_ptm001_2DRZ_t.i)
initial_fuel_density = 11057.75
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.4
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.00008
clad_thickness = 0.00047
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.685
elem_type = QUAD8
nx_c = 4
ny_c = 100
nx_p = 20
ny_p = 100
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
[]
[burnup]
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 39814.5 39814.5 44289.3 44289.3 53927.4 53927.4 0'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 251280'
y = '3.3e+15 3.3e+15'
[]
[f_temp_out_clad]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 295 634.94 662.273 676.998 686.217 706.339 727 743.358 758.311 780.069 799.077 815.576 846.374 860.233 875.494 882.809 889.8'
scale_factor = 1
axis = 1
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0.000175 0.0464075 0.0843675 0.1075625 0.152025 0.1994625 0.2464725 0.2947475 0.356915 0.43356 0.49848 0.625 0.700475 0.797485 0.8723425 0.96'
y = '0 251280'
z = '0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846 0.751 0.752 0.767 0.796 0.82 0.852 0.875 0.915 0.944 0.963 0.988 1 0.985 0.955 0.913 0.846'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = ' 0 72000 158040 160200 246600 248400 249000.012 251280'
y = ' 0 34700 34700 38600 38600 47000 47000 0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.1372
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
porosity = pore
energy_per_fission = 3.2e-11
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[temp_clad_outside]
type = FunctionDirichletBC
variable = temp
function = f_temp_out_clad
boundary = 2
[]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3145
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
temperature = temp
porosity = pore
block = pellet
Am_content = 0.0237
oxy_to_metal_ratio = 1.982
output_properties = 'thermal_conductivity'
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = ${initial_fuel_density}
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius_const = 14e-06 #I'm keeping the grain radius const because the grain growth in MOX is probably different due to high Temp
bubble_gb_limit = 1.0e+11
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -sub_pc_type'
petsc_options_value = 'asm lu'
line_search = 'none'
fixed_point_max_its = 1
fixed_point_abs_tol = 1e-3
fixed_point_rel_tol = 1e-3
l_max_its = 50
l_tol = 8e-3
nl_max_its = 50
nl_rel_tol = 1e-3
nl_abs_tol = 1e-3
start_time = 0
n_startup_steps = 1
end_time = 251280
dtmax = 10000
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e1
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = ElementAverageValue
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
variable = burnup
[]
[ave_pore]
type = ElementAverageValue
block = pellet
variable = pore
[]
[max_pore]
type = NodalExtremeValue
block = pellet
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
block = pellet
value_type = min
variable = pore
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
# variable = temp
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
# variable = temp
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
# variable = temp
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.4 # rod height
[]
[]
[VectorPostprocessors]
[fuel_radial_temperature_Sample1]
type = LineValueSampler
variable = temp
start_point = '0.0 0.283 0.0'
end_point = '0.0027 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample1]
type = LineValueSampler
variable = pore
start_point = '0.0 0.283 0.0'
end_point = '0.0027 0.283 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample2]
type = LineValueSampler
variable = temp
start_point = '0.0 0.347 0.0'
end_point = '0.0027 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample2]
type = LineValueSampler
variable = pore
start_point = '0.0 0.347 0.0'
end_point = '0.0027 0.347 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[fuel_radial_temperature_Sample3]
type = LineValueSampler
variable = temp
start_point = '0.0 0.2 0.0'
end_point = '0.0027 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[radial_porosity_Sample3]
type = LineValueSampler
variable = pore
start_point = '0.0 0.2 0.0'
end_point = '0.0027 0.2 0.0'
num_points = 200
execute_on = final
sort_by = x
outputs = line_plot
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[line_plot]
type = CSV
execute_on = 'FINAL'
time_step_interval = 1
file_base = 1d
create_final_symlink = true
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = b14_ptm001_pore.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
[]
(examples/thor_capsule_transfer/pin_with_heat_sink.i)
# Example of adding a heat sink outside of an already irradiated pin.
# An example of using a base irradiation's output exodus file to initialize a
# pin with a heat sink next to it (like in THOR). This is useful for taking
# an EBR-II pin and putting it in TREAT in THOR.
initial_fuel_density = 15800.0
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
X_Pu = 0.16029880703609925
X_Zr = 0.22566146557004974
[]
[Problem]
type = AugmentedLagrangianContactProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
# mesh options
patch_size = 50
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
# These are the setting from the base irradiation for your information
#[smear_2drz]
# type = FuelPinMeshGenerator
# clad_thickness = 0.000381
# pellet_outer_radius = 0.0021971
# pellet_height = 0.342646
# clad_top_gap_height = 0.2620678
# clad_gap_width = 0.0003429
# bottom_clad_height = 0.0127
# top_clad_height = 0.0127
# clad_bot_gap_height = 0.001 # arbitrary
# # meshing parameters
# clad_mesh_density = customize
# pellet_mesh_density = customize
# nx_p = 5
# ny_p = 150
# nx_c = 4
# ny_c = 150
# ny_cu = 3
# ny_cl = 3
# pellet_quantity = 1
# elem_type = QUAD8
#[]
[file] # This is the pin's output exodus
type = FileMeshGenerator
file = base_irradiation_out.e
use_for_exodus_restart = true
[]
[sink] # Generic sink dimensions
type = GeneratedMeshGenerator
dim = 2
xmin = 0.0032639
xmax = 0.005461
nx = 5
ymin = 0.0
ymax = 0.6311138
ny = 100
elem_type = QUAD8
boundary_id_offset = 50
[]
[combine]
type = CombinerGenerator
inputs = 'file sink'
[]
[name_sink]
type = SubdomainBoundingBoxGenerator
input = 'combine'
bottom_left = '0.0032638 -0.00001 0'
top_right = '0.005462 0.6311139 0'
block_id = 5
block_name = 'heat_sink'
[]
[]
[Variables]
[T]
initial_from_file_var = T
[]
[disp_x]
initial_from_file_var = disp_x
[]
[disp_y]
initial_from_file_var = disp_y
[]
[]
[ICs]
[sink_T]
type = ConstantIC
block = heat_sink
variable = T
value = 298 # K
[]
[]
[Problem]
# initial condition is overriding the restarted T variable
allow_initial_conditions_with_restart = true
[]
[AuxVariables]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 360'
y = '23500 30000'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = custom
custom_params = '0.88416801 1.07334286 -1.26837226 0.00726538'
pellet_length = 0.342646
pellet_y_start = 0.0137
[]
[axial_flux_peaking_factors]
type = PowerPeakingFunction
fit = custom
custom_params = '0.78912541 1.7214792 -2.09297848 0.19040197'
pellet_length = 0.342646
pellet_y_start = 0.0137
zero_beyond_top_and_bottom = False
[]
[flux_history]
type = PiecewiseLinear
x = '0 86400 31536000' # 1 year
y = '1 2.0e19 1.0e19'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
[fuel]
additional_generate_output = 'creep_strain_xx creep_strain_yy creep_strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
additional_generate_output = 'creep_strain_xx creep_strain_yy creep_strain_zz'
extra_vector_tags = 'ref'
block = 1
eigenstrain_names = 'clad_thermal_eigenstrain clad_volume_eigenstrain'
[]
[sink]
extra_vector_tags = 'ref'
block = heat_sink
eigenstrain_names = 'sink_thermal_eigenstrain'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = T
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = T
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = T
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.2
normalize_penalty = true
tangential_tolerance = 0.4
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 0.8
al_frictional_force_tolerance = 0.8
[]
[clad_sink_mechanical]
primary = 53
secondary = 2
penalty = 1e12
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.2
normalize_penalty = true
tangential_tolerance = 0.4
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 0.8
al_frictional_force_tolerance = 0.8
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = T
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 75.0
tangential_tolerance = 1e-4
min_gap = 0.0003429
[]
[thermal_sink]
type = GapHeatTransfer
variable = T
primary = 53
secondary = 2
quadrature = true
gap_conductivity = 75.0
tangential_tolerance = 1e-4
min_gap = 0.0003429
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_sink]
type = DirichletBC
variable = disp_y
boundary = 50
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 51
factor = 151000.0
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6
startup_time = 0
R = 8.3143
temperature = ave_temp_plenum
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
execute_on = timestep_end
[]
[]
[]
[Materials]
[phase]
type = PhaseUPuZr
block = pellet
AB_temp = 965.15
CD_temp = 995.15
outputs = all
calc_H = false
temperature = T
[]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = 0.0021971
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = 0.22566146557004974
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
block = pellet
temperature = T
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = T
porosity = porosity
max_inelastic_increment = 2e-3
fission_rate = fission_rate
[]
[fuel_thermal_expansion]
type = UPuZrThermalExpansionEigenstrain
block = pellet
temperature = T
stress_free_temperature = 298.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = T
initial_porosity = 0.0
bubble_number_density = 5e17
interconnection_initiating_porosity = 0.16
interconnection_terminating_porosity = 0.18
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
anisotropic_factor = 0.5
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_factor = 1.5
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
spheat_model = savage
thcond_model = billone
porosity = porosity
temperature = T
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fractional_yield = 0.25
critical_porosity = 0.17
fractional_fgr_initial = 0.4
fractional_fgr_post = 0.7354
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_creep'
block = clad
[]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
factor = 1
axial_power_profile = axial_flux_peaking_factors
rod_ave_lin_pow = flux_history
outputs = all
[]
[clad_creep]
type = D9CreepUpdate
fast_neutron_flux = fast_neutron_flux
block = clad
temperature = T
youngs_modulus = 1.88e11
[]
[thermal_expansion]
type = D9ThermalExpansionEigenstrain
block = clad
temperature = T
stress_free_temperature = 298.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = D9Thermal
block = clad
temperature = T
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[clad_volumetric_swelling]
type = D9VolumetricSwellingEigenstrain
eigenstrain_name = clad_volume_eigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
temperature = T
[]
[sink_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100e9
poissons_ratio = 0.35
block = heat_sink
[]
[sink_stress]
type = ComputeFiniteStrainElasticStress
block = heat_sink
[]
[sink_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = heat_sink
temperature = T
stress_free_temperature = 298.0
eigenstrain_name = sink_thermal_eigenstrain
thermal_expansion_coeff = 8.5e-6
[]
[sink_thermal]
type = HeatConductionMaterial
block = heat_sink
specific_heat = 540
thermal_conductivity = 17
[]
[sink_density]
type = StrainAdjustedDensity
block = heat_sink
strain_free_density = 4.51e3
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 5e-3
nl_abs_tol = 1e-5
end_time = 9
dtmin = 0.01
dtmax = 3
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.5
growth_factor = 2
cutback_factor = 0.1
iteration_window = 5
optimal_iterations = 20
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = T
execute_on = 'initial linear'
[]
[ave_temp_plenum]
type = SideAverageValue
boundary = 6
variable = T
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = T
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = T
[]
[avg_clad_temp]
type = ElementAverageValue
variable = T
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = T
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = T
value_type = max
block = pellet
[]
[avg_sink_temp]
type = ElementAverageValue
variable = T
block = heat_sink
[]
[peak_sink_temp]
type = ElementExtremeValue
variable = T
value_type = max
block = heat_sink
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = T
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = T
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_integral_power]
type = ElementIntegralPower
variable = T
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.343
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[peak_burnup]
type = ElementExtremeValue
block = pellet
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[disp_x_max]
type = NodalExtremeValue
variable = disp_x
block = clad
[]
[disp_y_max]
type = NodalExtremeValue
variable = disp_y
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_cladding_creep_strain]
type = ElementExtremeValue
variable = creep_strain_mag
block = clad
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[Outputs]
color = true
exodus = true
perf_graph = true
csv = true
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y T'
show_var_residual_norms = true
[]
[Dampers]
[max_inc_damp_x]
type = MaxIncrement
max_increment = 3e-4
variable = disp_x
[]
[max_inc_damp_y]
type = MaxIncrement
max_increment = 3e-4
variable = disp_y
[]
[max_inc_temp]
type = MaxIncrement
max_increment = 25
variable = T
[]
[]
(examples/2D-RZ_rodlet_10pellets/smeared_cracking/ADSmearedCracking.i)
# This model is a higher order, smeared 10 pellet fuel stack (pellet).
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 10
pellet_height = 0.01186
pellet_outer_radius = 4.1e-3
pellet_mesh_density = coarse
clad_mesh_density = coarse
clad_gap_width = 160.0e-6
clad_thickness = 0.56e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 2.6e-2
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[crack_x]
order = CONSTANT
family = MONOMIAL
[]
[crack_y]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e08'
y = '0 2.5e4 2.5e04'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_automatic_differentiation = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_automatic_differentiation = true
[]
[]
[Kernels]
[gravity]
type = ADGravity
variable = disp_y
value = -9.81
[]
[heat]
type = ADHeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = ADNeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
RPF = RPF
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[radial_strain]
type = ADRankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = ADMaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[crack_x]
type = ADMaterialRealVectorValueAux
variable = crack_x
property = crack_damage
component = 0
block = pellet
[]
[crack_y]
type = ADMaterialRealVectorValueAux
variable = crack_y
property = crack_damage
component = 1
block = pellet
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
use_automatic_differentiation = true
[]
[]
[BCs]
[no_x_all]
type = ADDirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = ADDirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = ADDirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
use_automatic_differentiation = true
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
use_automatic_differentiation = true
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
use_ad = true
[]
[]
[Materials]
[fuel_thermal]
type = ADUO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[elastic_stress]
type = ADComputeSmearedCrackingStress
block = pellet
cracking_stress = 1.68e8
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
[]
[exponential_softening]
type = ADExponentialSoftening
[]
[fuel_creep]
type = ADUO2CreepUpdate
block = pellet
temperature = temp
fission_rate = fission_rate
initial_grain_radius = 10e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_thermal_expansion]
type = ADComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = ADUO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.035
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
[]
[fuel_volumetric_swelling]
type = ADUO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = ADHeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ADZryElasticityTensor
block = clad
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ADZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ADZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ADZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[fission_gas_release]
type = ADUO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = ADStrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = ADStrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
verbose = false
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 1.0e8
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ADElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ADElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_grain]
type = ADElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ADElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[center_penetration_fuel]
type = NodalVariableValue
variable = penetration
nodeid = 2579 # mesh dependent, at (0.0041, 0.0744)
[]
[center_contact_pressure_fuel]
type = NodalVariableValue
variable = contact_pressure
nodeid = 2579 # mesh dependent, at (0.0041, 0.0744)
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[]
# [VectorPostprocessors]
# [clad]
# type = NodalValueSampler
# variable = disp_x
# boundary = 2
# sort_by = y
# outputs = 'outfile_clad_radial_displacement'
# []
# [pellet]
# type = NodalValueSampler
# variable = disp_x
# boundary = 10
# sort_by = y
# outputs = 'outfile_fuel_radial_displacement'
# []
# []
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
# [outfile_clad_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
# [outfile_fuel_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
[]
[PerformanceMetricOutputs]
[]
(assessment/LWR/validation/LOCA_Studsvik/analysis/rod_196/Studsvik_196_part1.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_mesh]
type = FuelPinMeshGenerator
clad_top_gap_height = 0.0248576
pellet_height = 0.2606424
pellet_quantity = 1
clad_bot_gap_height = 0.0145
pellet_outer_radius = 3.92e-3
clad_gap_width = 80e-6
clad_thickness = 0.57e-3
clad_mesh_density = customize
pellet_mesh_density = customize
nx_c = 5
ny_c = 50
nx_p = 11
ny_p = 60
elem_type = QUAD8
[]
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
# Define dependent variables and initial conditions
[temperature]
initial_condition = 295.0 # set initial temp to coolant inlet
[]
[]
[AuxVariables]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[creep_strain_rate]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxygen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
format = columns
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for fill gas pressure
type = PiecewiseLinear
x = '-200 0 86400 47386400 47472800 47559200 47645600 94945600 95032000'
y = '0.0065371 1 1 1 1 1 1 1 0.0065371'
scale_factor = 15.5e6
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_relocation_eigenstrain fuel_volumetric_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
temperature = temperature
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
temperature = temperature
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history # using the power function defined above
axial_power_profile = axial_peaking_factors # using the axial power profile function defined above
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0 # for use with dished pellets (ratio of actual volume to cylinder volume)
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.05 0.95 0 0 0 0'
[]
[]
[AuxKernels]
# Define auxilliary kernels for each of the aux variables
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[creep_strain_rate]
type = MaterialRealAux
property = creep_rate
variable = creep_strain_rate
block = clad
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = MaterialRealAux
boundary = 2
variable = scale_thickness
property = oxide_scale_thickness
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
boundary = 2
variable = burst_stress
property = burst_stress
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = 'fission_gas_released he_prod'
released_gas_types = 'Kr Xe;
He'
released_fractions = '0.153 0.847;
1'
quadrature = true
contact_pressure = contact_pressure
refab_gas_types = He
refab_fractions = 1
refab_time = 95032000
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 3.44738e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = 'fission_gas_released he_prod'
output = plenum_pressure
refab_time = 95032000
refab_pressure = 8.2e6
refab_temperature = 295.0
refab_volume = 1.04e-05
cladding_failure_status = burst
equilibrium_pressure = equilibrium_pressure
additional_volumes = additional_volume
temperature_of_additional_volumes = addition_temperature
[]
[]
[]
[UserObjects]
[fuel_pin_geometry]
type = FuelPinGeometry
[]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
inlet_temperature = 580
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.00914 # 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'
[]
[]
[Materials]
[uo2_pulverization]
type = UO2Pulverization
block = pellet
layered_average_contact_pressure = contact_pressure
temperature = temperature
burnup_function = burnup
output_properties = pulverized
outputs = all
[]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = pellet
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = pellet
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
fuel_pin_geometry = fuel_pin_geometry
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.024
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_eigenstrain
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
block = clad
type = ZryThermal
temperature = temperature
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temperature
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = clad
[]
[clad_irradiation_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = zirlo
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
# effective_strain_rate_creep = creep_strain_rate
# failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = stress_zz
hoop_creep_strain = creep_strain_zz
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Dampers]
[limitT]
type = BoundingValueElementDamper
min_value = 290.0
max_value = 3000.0
variable = temperature
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -10
n_startup_steps = 1
end_time = 95032000
dtmax = 1e6
dtmin = 1e-6
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
timestep_limiting_function = forced_times
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
#outputs = exodus
execute_on = 'initial timestep_end'
[]
[fission_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fission_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[max_clad_hoop_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = strain_zz
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[he_prod]
type = IFBAHeProduction
b10_load = 9.27165354e-5
b10_enrich = 0.5
burnup = average_burnup
zrb2_thick = 10e-6
fuel_out_rad = 9.32e-3
ifba_len = 0.3
u235_enrich = 0.05
[]
[volume_pulverized]
type = ElementIntegralMaterialProperty
mat_prop = pulverized
block = pellet
[]
[max_fuel_temp_periphery]
type = NodalExtremeValue
value_type = max
variable = temperature
boundary = 10
[]
[additional_volume]
type = FunctionValuePostprocessor
function = 8.5e-6
execute_on = 'initial linear'
[]
[addition_temperature]
type = FunctionValuePostprocessor
function = 300.0
execute_on = 'initial linear'
[]
[equilibrium_pressure]
type = FunctionValuePostprocessor
function = 101325.0
execute_on = 'initial linear'
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[checkpoint]
type = Checkpoint
num_files = 2
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'volume_pulverized'
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_E/x441_grp_E.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(examples/NuclearMaterialActions/MetallicFuel/x441_group_A_nominal_action.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
temperature = temperature
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.38e-03
pellet_outer_radius = 2.195e-03
pellet_height = 343.0e-3
clad_top_gap_height = 373.0e-3
clad_gap_width = 0.345e-3
bottom_clad_height = 7.9e-3
top_clad_height = 7.9e-3
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 3
ny_p = 40
nx_c = 2
ny_c = 40
ny_cu = 2
ny_cl = 2
pellet_quantity = 1
elem_type = QUAD4
[]
# mesh options
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = ParsedFunction
expression = 0.151e6
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 343.0e-3
pellet_y_start = 8.1e-3
[]
[engr_radial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_rad / 2.195e-03'
symbol_values = 'max_fuel_radial_disp'
symbol_names = 'fuel_disp_rad'
[]
[engr_axial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_axial / 343.0e-3'
symbol_values = 'max_fuel_elongation'
symbol_names = 'fuel_disp_axial'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temperature
primary = 5
secondary = 10
quadrature = true
gap_conductance = 176811.6
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[NuclearMaterials]
physics = 'Mechanics Thermal'
fission_operation = Normal
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx
strain_yy strain_zz hoop_stress'
add_variables = true
extra_vector_tags = 'ref'
strain = FINITE
decomposition_method = TaylorExpansion
stress_free_temperature = 295.0
initial_temperature = 298
incremental = true
[UPuZr]
[fuel]
block = pellet
additional_generate_output = 'volumetric_strain'
upuzr_models = 'Elastic Burnup Creep Swelling ThermalExpansion'
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = 2.195e-03
bubble_number_density = 5e17
interconnection_initiating_porosity = 0.29
interconnection_terminating_porosity = 0.31
initial_X_Pu = 0.225
initial_X_Zr = 0.163
critical_porosity = 0.30
fractional_fgr_initial = 0.4
fractional_fgr_post = 0.8
density = 15800
output_properties = 'porosity gaseous_porosity'
max_inelastic_increment = 1e-2
[]
[]
[HT9]
[clad]
block = clad
additional_generate_output = 'hoop_creep_strain hoop_elastic_strain'
ht9_models = 'Elastic Creep ThermalExpansion'
fast_flux_factor = 2.47e19
[]
[]
[]
[Materials]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temperature
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-5
nl_abs_tol = 1e-7
end_time = 1e7
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 6
optimal_iterations = 20
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temperature
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temperature
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temperature
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temperature
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temperature
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temperature
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = -1.53703e-6
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temperature
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = creep_strain_zz
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_radial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_xx
[]
[max_fuel_axial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_yy
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_fuel_radial_disp]
type = NodalExtremeValue
variable = disp_x
boundary = 'all_pellet_exterior'
[]
[engr_strain_fuel_radial]
type = FunctionValuePostprocessor
function = engr_radial_strain_fuel
[]
[engr_strain_fuel_axial]
type = FunctionValuePostprocessor
function = engr_axial_strain_fuel
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
time_step_interval = 1
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_group_A_nominal_action_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temperature'
show_var_residual_norms = true
[]
(test/tests/metallic_fuel_melting_function/test_general.i)
# This is to test the calculation of metallic fuel melting function based on a vectorpostprocessor
[Problem]
solve = false
[]
[Mesh]
coord_type = RZ
[gen]
type = FuelPinMeshGenerator
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_bot_gap_height = 0.31e-3
clad_thickness = 3.81e-4
clad_gap_width = 0.19e-4
pellet_outer_radius = 4.00e-3
pellet_height = 0.05
pellet_quantity = 1
clad_top_gap_height = 0.05
include_clad = false
pellet_mesh_density = customize
nx_p = 25
ny_p = 40
[]
[]
[Functions]
[fuel_melting]
type = MetallicFuelMeltingFunction
vectorpostprocessor_name = fuel_melting
argument_column = y
value_column = melting_thickness
[]
[]
[AuxVariables]
[func_val]
[]
[]
[AuxKernels]
[func_val]
type = FunctionAux
function = fuel_melting
variable = func_val
[]
[]
[Executioner]
type = Transient
num_steps = 1
dt = 1.0
[]
[VectorPostprocessors]
[fuel_melting]
type = CSVReaderVectorPostprocessor
csv_file = fuel_melt.csv
force_preic = true
[]
[]
[Outputs]
exodus = true
execute_on = TIMESTEP_END
[]
(assessment/LWR/benchmark/FUMEXII_simplified_cases/analysis/27_2d/27_2d.i)
initial_fuel_density = 10485.9
[GlobalParams]
density = ${initial_fuel_density} #95.5% TD (TD = 10980)
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11 # J/fission (200 MeV)
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 3.5
pellet_outer_radius = 0.00456
pellet_mesh_density = customize
ny_p = 318
nx_p = 11
clad_thickness = 7.3e-4
clad_gap_width = 8.5e-5
clad_bot_gap_height = 1e-3
bottom_clad_height = 0.00224
top_clad_height = 0.00224
clad_top_gap_height = 0.315
clad_mesh_density = customize
ny_c = 324
nx_c = 4
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[grain_radius]
block = pellet
initial_condition = 7.8e-6 # 10e-6 / 2 * 1.56 = 7.8e-6
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_profile]
type = PiecewiseBilinear
data_file = 27_2d_power.csv
axis = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0'
y = '0.006537 1'
[]
[time_function]
type = PiecewiseLinear
data_file = 27_2d_time_function.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellet]
block = pellet
add_variables = false
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[clad]
block = clad
add_variables = false
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 20
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.04 0.96 0 0 0 0'
RPF = RPF
fuel_volume_ratio = 1
fuel_pin_geometry = pin_geometry
[]
[]
[AuxKernels]
[GrainRadiusAux]
type = GrainRadiusAux
block = pellet
execute_on = linear
temperature = temp
variable = grain_radius
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
block = clad
factor = 4.0e13 # (n/m2-s per W/m)
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.2e6 # FUMEXII_27(2d) => 22 bar (2.2 MPa) (He fill)
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 563
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 9.12e-3
rod_pitch = 1.43e-2
linear_heat_rate = power_profile
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
temperature = temp
burnup_function = burnup
thermal_conductivity_model = NFIR
initial_porosity = 0.045
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_profile
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.006
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10485.9
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
initial_porosity = 0.045
gbs_model = true
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 100.0
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-3
nl_max_its = 25
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
dtmax = 1e6
dtmin = 1
end_time = 146085120
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
timestep_limiting_function = time_function
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
[]
[int_flux_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[int_flux_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fissionrate]
type = ElementAverageValue
block = pellet
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_profile
scale_factor = 3.5 # rod height
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = pellet
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = 1
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_G/x441_leg_G.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_swelling'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = MaterialRealAux
variable = porosity
property = porosity
block = pellet
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrain
block = pellet
temperature = temp
# hydrostatic_stress = hydrostatic_stress
hydrostatic_stress = 1e6
eigenstrain_name = fuel_volumetric_swelling
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_legacy_swell
[out2]
type = CSV
file_base = x441_${group_name}_legacy_swell_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_legacy_swell_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_legacy_swell_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_intervals2.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
intervals = '0.01186 0.01186'
ny_c_plenum = 3
ny_c_bot_gap = 2
pellet_mesh_density = customize
ny_p = 6
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[pellet_top]
type = DirichletBC
variable = u
boundary = top_of_top_pellet
value = 1
[]
[pellet_bottom]
type = DirichletBC
variable = u
boundary = bottom_of_bottom_pellet
value = 0
[]
[clad_top]
type = DirichletBC
variable = u
boundary = clad_outside_top
value = 1
[]
[clad_bottom]
type = DirichletBC
variable = u
boundary = clad_outside_bottom
value = 0
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
exodus = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_E/x441_leg_E.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_swelling'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = MaterialRealAux
variable = porosity
property = porosity
block = pellet
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrain
block = pellet
temperature = temp
# hydrostatic_stress = hydrostatic_stress
hydrostatic_stress = 1e6
eigenstrain_name = fuel_volumetric_swelling
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_legacy_swell
[out2]
type = CSV
file_base = x441_${group_name}_legacy_swell_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_legacy_swell_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_legacy_swell_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_B/x441_grp_B.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/ifba_he_production/doc/fill_gas_helium.i)
#
# 2-D RZ One Pellet Test - Using Helium as fill gas
#
# This test is of a single pellet with cladding and a specified initial
# pressure of He fill gas.
#
# This model results in a lower limit for the interior_temp due to the type of
# fill gas used.
#
[GlobalParams]
density = 10431.0 #95% TD (TD = 10980)
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 4
nx_p = 6
nx_c = 3
ny_cu = 3
ny_c = 4
ny_cl = 3
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
displacements = 'disp_x disp_y'
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
block = '3'
initial_condition = 5e-6 # must be the same as the initial value in Sifgr
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
block = '3'
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[pid]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
# CoolantChannel requires this to have units while axial_peaking_factors must be normalized.
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 20e3 # 20 kW/m peak power.
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[q] # this is for fuel_relocation
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[]
[SolidMechanics]
[solid]
temperature = temp
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
#convert W/m from power profile to fission/m**3-s
#calculated as 1/(energy_per_fission*area)
#using energy_per_fission = 3.2e-11, consistent with 200 MeV/fission
value = 5.3548e+14
fission_rate_function = q
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
# If you divide flux/power, you get this constant factor
factor = 2.34e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
execute_on = linear
[]
[gas_swell]
type = MaterialRealAux
block = '3'
variable = gas_swell
property = deltav_v0_bd
execute_on = timestep_end
[]
[pid]
type = ProcessorIDAux
variable = pid
[]
[gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 10
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = fis_gas_released
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
# pin entire clad bottom in y
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
# pin fuel bottom in y
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
# pin fuel axis in x and z
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Pressure]
# apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
# apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
startup_time = 0.0
material_input = fis_gas_released
output_initial_moles = initial_moles
R = 8.3143
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
displacements = 'disp_x disp_y'
extra_vector_tags = 'ref'
execute_on = 'initial linear'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # PA
inlet_massflux = 3880 # kg/m^2-sec
rod_diameter = 0.95e-2 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_swelling]
type = VSwellingUO2
block = '3'
temperature = temp
burnup = burnup
gas_swelling_type = sifgrs
[]
[fuel_solid_mechanics_elastic]
type = Elastic
block = '3'
temperature = temp
youngs_modulus = 2.e11
poissons_ratio = 0.345
thermal_expansion = 10.0e-6
dep_matl_props = deltav_v0_bd
[]
[fission_gas_release]
type = Sifgrs
block = '3'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_solid_mechanics]
type = SolidModel
block = 1
temperature = temp
youngs_modulus = 7.5e10
poissons_ratio = 0.3
thermal_expansion = 5.0e-6
constitutive_model = clad_plasticity
[]
[clad_growth]
type = IrradiationGrowthZr4
block = 1
fast_neutron_fluence = fast_neutron_fluence
growth_direction = 1
[]
[clad_plasticity]
type = IsotropicPlasticity
block = 1
temperature = temp
yield_stress = 550e6
hardening_constant = 2.5e9
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 25.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x'
off_diag_column = 'disp_x'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 5.3e7 # 1.7 years (~3% burnup)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e5 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01 # change: length of fuel stack in meters (1 pellet height)
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[out]
type = CSV
delimiter = ' '
[]
[]
(assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/0pt7MPa/25C_sec/25C_sec_Hardy_Tube_Test_0pt7MPa.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[gen]
type = FuelPinMeshGenerator
include_fuel = false
include_clad = true
pellet_outer_radius = 0.0072527
clad_gap_width = 0.0
clad_top_gap_height = 0.0
clad_bot_gap_height = 0.0
clad_thickness = 0.38e-3
pellet_height = 0.5
pellet_quantity = 1
clad_mesh_density = customize
nx_c = 2
ny_c = 50
elem_type = QUAD8
[]
[]
[Variables]
[temperature]
initial_condition = 600.0
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 40'
y = '1 1'
[]
[temp_function]
type = PiecewiseLinear
y = '600 1600'
[]
[temperature_profile]
type = PiecewiseBilinear
y = '0 40'
x = '0 0.25224 0.50448'
z = '0.995 1.01 0.995 0.995 1.01 0.995'
axis = 1
[]
[inner_temperature]
type = CompositeFunction
functions = 'temp_function temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
factor = 0.0
function = pressure_function
[]
[inner_surface]
boundary = 'clad_inside_right clad_inside_bottom clad_inside_top'
function = pressure_function
[]
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 1001
value = 0.0
[]
[x_fix]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
function = inner_temperature
variable = temperature
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[Materials]
[clad_thermal]
type = ZryThermal
block = clad
zry_thermal_properties_model = MATPRO
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = true
matpro_poissons_ratio = true
temperature = temperature
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = true
model_thermal_creep = true
temperature_loca_creep_begin = 840 # values from the report
temperature_standard_thermal_creep_end = 975
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 600.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-5
nl_abs_tol = 1.0e-8
start_time = 0
n_startup_steps = 1
end_time = 40
dtmax = 1
dtmin = 0.0000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 1.0
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = all_clad_interior
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = total_hoop_strain
[]
[max_disp_x]
type = NodalExtremeValue
block = clad
value_type = max
variable = disp_x
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[csv]
type = CSV
[]
[chkfile]
type = CSV
show = 'max_disp_x max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = false
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_C/x441_leg_C.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_swelling'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = MaterialRealAux
variable = porosity
property = porosity
block = pellet
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrain
block = pellet
temperature = temp
# hydrostatic_stress = hydrostatic_stress
hydrostatic_stress = 1e6
eigenstrain_name = fuel_volumetric_swelling
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_legacy_swell
[out2]
type = CSV
file_base = x441_${group_name}_legacy_swell_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_legacy_swell_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_legacy_swell_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/MOX/JOYO/MK-I/analysis/MK-I_50MW_master_new_bubble_gb_lim.i)
initial_fuel_density = 10836.8
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.065
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.6
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000100
clad_thickness = 0.00035
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.599
elem_type = QUAD8
nx_c = 4
ny_c = 200
nx_p = 20
ny_p = 200
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = '0 70000 17153028'
y = '0 25577 25577'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 70000 17153028'
y = '0 1.2e+19 1.2e+19'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0 0.071 0.146 0.221 0.296 0.37 0.443 0.566'
y = '0 17153028'
z = '0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672 0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = '0 70000 17153028'
y = '0 21000 21000'
[]
[clad_surface_temp]
type = PiecewiseBilinear
x = '0 0.075 0.15 0.225 0.3 0.375 0.45 0.525 0.6'
y = '0 17153028'
z = '295 295 295 295 295 295 295 295 295 499.9 509.1 517.8 525.42 532.71 540.29 547.7 552.3 554.81'
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.065
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp_clad_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_surface_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 101325
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 300000
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10836.8
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
diff_coeff_option = TURNBULL_D1_4D2_4D3
fission_rate = fission_rate
grain_radius_const = 8.01e-6 #I'm keeping the grain radius const because the grain growth in MOX is probably different due to high Temp
bubble_gb_limit = 1.0e+11
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-5
fixed_point_rel_tol = 1e-5
fixed_point_max_its = 1
l_max_its = 70
l_tol = 8e-3
nl_max_its = 70
nl_rel_tol = 1e-5
nl_abs_tol = 1e-5
start_time = 0
n_startup_steps = 1
end_time = 17153028
dtmax = 1e6
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 5000
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.6 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = MK-I_50MW_sub_new_bubble_gb_lim.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'temp disp_x disp_y'
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM071/BFM071.i)
################################################################################
#
# Description: Calvert Cliffs BFM071
#
#
#
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM071_power.csv
# axial peaking factor file BFM071_axial_peaking.csv
# flux boundary condition file BFM071_fast_flux.csv
################################################################################
initial_fuel_density = 10386.93
[GlobalParams]
density = ${initial_fuel_density} #94.662 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.31727
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM071_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM071_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 178956096 178956456'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 178956096 178956456'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM071_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10386.93
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 178956456
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/metallic_fuel_cladding_degradation/test_od.i)
# This is to test the calculation of cladding degradation factor function based on a vectorpostprocessor
[Problem]
solve = false
[]
[Mesh]
coord_type = RZ
[gen]
type = FuelPinMeshGenerator
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_bot_gap_height = 0.31e-3
clad_thickness = 3.81e-4
clad_gap_width = 0.19e-4
pellet_outer_radius = 4.00e-3
pellet_height = 0.05
pellet_quantity = 1
clad_top_gap_height = 0.05
include_fuel = false
clad_mesh_density = customize
nx_c = 25
ny_c = 100
ny_cu = 5
ny_cl = 5
[]
[]
[Functions]
[od_degradation]
type = MetallicFuelWastageDegradationFunction
wastage_type = OD
vectorpostprocessor_name = id_wastage
argument_column = y
value_column = cc_wastage_thickness
cladding_start = 2.24e-3
cladding_end = 102.55e-3
cladding_thickness = 3.81e-4
cladding_outer_radius = 4.4e-3
[]
[]
[AuxVariables]
[func_val]
[]
[]
[AuxKernels]
[func_val]
type = FunctionAux
function = od_degradation
variable = func_val
[]
[]
[Executioner]
type = Transient
num_steps = 5
dt = 1.0
[]
[VectorPostprocessors]
[id_wastage]
type = CSVReaderVectorPostprocessor
csv_file = od_wast.csv
force_preic = true
[]
[]
[Outputs]
exodus = true
[]
(test/tests/fuel_pin_mesh_generator/fuel_pin_mesh.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[pellet_centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
exodus = true
[]
(assessment/nitride/JOYO/JOYO_L4C4/analysis/JOYO_Pin_base.i)
[GlobalParams]
order = FIRST
energy_per_fission = ${energy_per_fission}
displacements = 'disp_x disp_y'
value_range_behavior = IGNORE
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
converge_on = 'disp_x disp_y temperature'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${cladding_thickness}
pellet_outer_radius = ${fuel_radius}
pellet_height = ${fuel_height}
clad_top_gap_height = ${plenum_height}
clad_gap_width = ${cladding_gap_width}
bottom_clad_height = ${cladding_bottom_top_plug_length}
top_clad_height = ${cladding_bottom_top_plug_length}
clad_bot_gap_height = ${gap_bottom_length}
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = 3
ny_cl = 3
pellet_quantity = 1
elem_type = QUAD4
[]
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
initial_condition = ${initial_temperature}
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 ${time_end_ramp_up} ${time_start_ramp_down} ${time_end_ramp_down}'
y = '0 ${avg_lin_power} ${avg_lin_power} 0'
[]
[coolant_wall_temperature]
type = ParsedFunction
expression = 'if(t<${time_end_ramp_up}, ${initial_temperature} + t*(${a}*y^2 + ${b}*y + ${c} - ${initial_temperature})/(${time_end_ramp_up}),if(t<${time_start_ramp_down},${a}*y^2 + ${b}*y + ${c}, if(t<${time_end_ramp_down}, ${a}*y^2 + ${b}*y + ${c} + (t-${time_start_ramp_down})*(${initial_temperature}-(${a}*y^2 + ${b}*y + ${c}))/(${time_end_ramp_down}-${time_start_ramp_down}),${initial_temperature})))'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 ${run_time}'
y = '${coolant_pressure} ${coolant_pressure}'
[]
[plenum_pressure]
type = ConstantFunction
value = ${initial_plenum_pressure}
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 ${time_end_ramp_up} ${run_time}'
y = '0 ${fast_neutron_flux} ${fast_neutron_flux}'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '${pos_1} ${pos_2} ${pos_3} ${pos_4} ${pos_5} ${pos_6} ${pos_7} ${pos_8} ${pos_9} ${pos_10} ${pos_11} ${pos_12} ${pos_13} ${pos_14} ${pos_15} ${pos_16}'
y = '0 ${run_time}'
z = '${pow_1} ${pow_2} ${pow_3} ${pow_4} ${pow_5} ${pow_6} ${pow_7} ${pow_8} ${pow_9} ${pow_10} ${pow_11} ${pow_12} ${pow_13} ${pow_14} ${pow_15} ${pow_16} ${pow_1} ${pow_2} ${pow_3} ${pow_4} ${pow_5} ${pow_6} ${pow_7} ${pow_8} ${pow_9} ${pow_10} ${pow_11} ${pow_12} ${pow_13} ${pow_14} ${pow_15} ${pow_16}'
scale_factor = 1
axis = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet
strain = FINITE
add_variables = true
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
eigenstrain_names = 'fuel_thermal_expansion solid_swelling_eigenstrain'
temperature = temperature
[]
[clad]
block = clad
strain = FINITE
incremental = true
add_variables = true
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
eigenstrain_names = 'clad_thermal_expansion'
temperature = temperature
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
block = 'pellet clad'
[]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet clad'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = 'pellet clad'
[]
[heat_source]
type = FissionRateHeatSource
variable = temperature
fission_rate = fission_rate
extra_vector_tags = 'ref'
energy_deposited_in_fuel = 0.95
block = 'pellet'
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5' # clad_inside_right
secondary_boundary = '10' # pellet_outer_radial_surface
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = 5 # clad_inside_right
secondary = 10 # pellet_outer_radial_surface
c_normal = 1e+11
correct_edge_dropping = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12' # centerline
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = '1' # clad_outside_bottom
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = '20' # bottom_of_bottom_pellet
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3' # clad_outside_bottom, clad_outside_right, clad_outside_top
function = coolant_press_ramp
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9 # inside_surfaces
initial_pressure = ${initial_plenum_pressure}
startup_time = 0
R = ${R}
initial_temperature = ${initial_temperature}
temperature = ave_temperature_interior # coupling to post processor to get gas temperature approximation
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
volume = gas_volume # coupling to post processor to get gas volume
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[clad_outer_temperature]
type = FunctionDirichletBC
boundary = '1 2 3' # clad_outside_bottom, clad_outside_right, clad_outside_top
function = coolant_wall_temperature
variable = temperature
[]
[]
[Materials]
[porosity]
type = GenericConstantMaterial
block = pellet
prop_names = porosity
prop_values = ${initial_porosity}
outputs = all
[]
[fission_rate]
type = FissionRate
block = pellet
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${fuel_radius}
outputs = all
[]
[fuel_thermal]
type = MNThermal
block = pellet
temperature = temperature
porosity = porosity
outputs = all
[]
[fuel_elasticity_tensor]
block = pellet
type = MNElasticityTensor
temperature = temperature
porosity = porosity
output_properties = 'youngs_modulus poissons_ratio'
outputs = all
[]
[fuel_thermal_expansion]
block = pellet
type = MNThermalExpansionEigenstrain
eigenstrain_name = fuel_thermal_expansion
stress_free_temperature = ${initial_temperature}
temperature = temperature
[]
[fuel_creep]
block = pellet
type = MNCreepUpdate
max_inelastic_increment = 1e-4
temperature = temperature
porosity = porosity
fission_rate = fission_rate
outputs = all
value_range_behavior = EXCEPTION
[]
[burnup]
type = Burnup
block = pellet
atoms_heavy_metal_per_volume = ${atoms_heavy_metal_per_volume}
outputs = all
[]
[burnup_swelling]
type = BurnupDependentEigenstrain
block = pellet
eigenstrain_name = 'solid_swelling_eigenstrain'
burnup = burnup
outputs = all
[]
[fuel_radial_return_stress]
block = pellet
type = ComputeMultipleInelasticStress
inelastic_models = 'fuel_creep'
[]
[fuel_density]
block = pellet
type = StrainAdjustedDensity
strain_free_density = ${density}
[]
[clad_elasticity_tensor]
block = clad
type = SS316ElasticityTensor
temperature = temperature
elastic_constants_model = legacy_ifr
[]
[clad_thermal_expansion]
block = clad
type = SS316ThermalExpansionEigenstrain
eigenstrain_name = clad_thermal_expansion
stress_free_temperature = ${initial_temperature}
temperature = temperature
[]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = false
block = clad
flux_function = fast_neutron_flux_function
[]
[clad_creep]
block = clad
type = SS316CreepUpdate
fast_neutron_flux = fast_neutron_flux
temperature = temperature
[]
[clad_stress]
block = clad
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_creep'
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temperature
[]
[clad_density]
block = clad
type = DerivativeParsedMaterial
coupled_variables = 'temperature'
expression = '-4.454e-5*temperature^2 - 0.4297*temperature + 8089.4'
property_name = 'density'
[]
[]
[Dampers]
[disp_x]
type = MaxIncrement
variable = disp_x
max_increment = 1e-4
min_damping = 1e-4
[]
[disp_y]
type = MaxIncrement
variable = disp_y
max_increment = 1e-3
min_damping = 1e-4
[]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
min_damping = 1e-4
[]
[]
[Executioner]
type = Transient
# With mortar contact
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-15'
snesmf_reuse_base = false
verbose = true
line_search = 'none'
l_max_its = 60
nl_max_its = 20
nl_rel_tol = 5e-6
nl_abs_tol = 5e-9
end_time = ${run_time}
dtmin = 1
dtmax = 5e4
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = time_step_limit
force_step_every_function_point = true
timestep_limiting_function = power_history
dt = 10
[]
[]
[Postprocessors]
# elemental temperatures
[temperature_fuel_avg]
type = ElementAverageValue
variable = temperature
block = pellet
execute_on = 'initial timestep_end'
[]
[temperature_fuel_max]
type = ElementExtremeValue
variable = temperature
block = pellet
[]
[temperature_fuel_min]
type = ElementExtremeValue
variable = temperature
block = pellet
value_type = min
[]
[temperature_clad_avg]
type = ElementAverageValue
variable = temperature
block = clad
execute_on = 'initial timestep_end'
[]
[temperature_clad_max]
type = ElementExtremeValue
variable = temperature
block = clad
[]
[temperature_clad_min]
type = ElementExtremeValue
variable = temperature
block = clad
value_type = min
[]
[ave_temperature_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = '9' # inside_surfaces
variable = temperature
execute_on = 'initial linear'
[]
[temperature_fuel_centerline_avg]
type = AxisymmetricCenterlineAverageValue
boundary = '12' # centerline
variable = temperature
[]
[temperature_fuel_centerline_max]
type = NodalExtremeValue
boundary = '12' # centerline
variable = temperature
[]
[temperature_fuel_centerline_min]
type = NodalExtremeValue
boundary = '12' # centerline
variable = temperature
value_type = min
[]
[temperature_fuel_surface_avg]
type = SideAverageValue
boundary = '10' # pellet_outer_radial_surface
variable = temperature
[]
[temperature_fuel_surface_max]
type = NodalExtremeValue
boundary = '10' # pellet_outer_radial_surface
variable = temperature
[]
[temperature_fuel_surface_min]
type = NodalExtremeValue
boundary = '10' # pellet_outer_radial_surface
variable = temperature
value_type = min
[]
# stresses
[stress_vonmises_fuel_avg]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[stress_vonmises_fuel_max]
type = ElementExtremeValue
variable = vonmises_stress
block = pellet
[]
[stress_vonmises_fuel_min]
type = ElementExtremeValue
variable = vonmises_stress
value_type = min
block = pellet
[]
[stress_hydro_fuel_avg]
type = ElementAverageValue
variable = hydrostatic_stress
block = pellet
[]
[stress_hydro_fuel_max]
type = ElementExtremeValue
variable = hydrostatic_stress
block = pellet
[]
[stress_hydro_fuel_min]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
# strain information
[strain_solid_swelling_fuel_avg]
type = ElementAverageValue
variable = solid_swelling
block = pellet
[]
[strain_volumetric_fuel_avg]
type = ElementAverageValue
variable = firstinv_strain
block = pellet
[]
[strain_axial_fuel_avg]
type = ParsedPostprocessor
pp_names = 'disp_y_fuel_top_surface_avg disp_y_fuel_bottom_surface_avg'
expression = '(disp_y_fuel_top_surface_avg - disp_y_fuel_bottom_surface_avg) / ${fuel_height}'
[]
[disp_y_fuel_top_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = '11' # top_of_top_pellet
[]
[disp_y_fuel_top_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = '11' # top_of_top_pellet
[]
[disp_y_fuel_bottom_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = '20' # bottom_of_bottom_pellet
[]
[disp_y_fuel_bottom_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = '20' # bottom_of_bottom_pellet
[]
[disp_x_fuel_radial_surface_max]
type = NodalExtremeValue
variable = disp_x
boundary = '10' # pellet_outer_radial_surface
[]
[disp_x_fuel_radial_surface_avg]
type = SideAverageValue
variable = disp_x
boundary = '10' # pellet_outer_radial_surface
[]
[burnup_avg]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[burnup_max]
type = ElementExtremeValue
block = pellet
variable = burnup
[]
[fission_rate_avg]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity_fuel_avg]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[porosity_fuel_max]
type = ElementExtremeValue
variable = porosity
block = pellet
[]
[porosity_fuel_min]
type = ElementExtremeValue
variable = porosity
value_type = min
block = pellet
[]
[swelling_dia_percent]
type = ParsedPostprocessor
pp_names = 'disp_x_fuel_radial_surface_avg'
expression = 'disp_x_fuel_radial_surface_avg / 3.14159 / ${fuel_radius} * 100'
[]
[fuel_volume]
type = VolumePostprocessor
block = pellet
execute_on = 'TIMESTEP_END INITIAL'
use_displaced_mesh = true
[]
[swelling_vol_percent]
type = ParsedPostprocessor
pp_names = 'fuel_volume'
expression = '(fuel_volume - ${fuel_volume}) / ${fuel_volume} * 100'
[]
[gas_volume]
type = InternalVolume
boundary = '9' # inside_surfaces
execute_on = 'initial linear'
[]
# extras
[actual_time_step_limit]
type = MaterialTimeStepPostprocessor
outputs = none
block = 'pellet'
[]
[time_step_limit]
type = ParsedPostprocessor
expression = 'if(actual_time_step_limit > 1e6, 1e6, actual_time_step_limit)'
pp_names = 'actual_time_step_limit'
[]
[]
[PerformanceMetricOutputs]
outputs = 'performance_metrics performance_metrics_sync exodus console base_out'
[]
[Outputs]
perf_graph = true
csv = true
sync_times = '1e2 1e3 5e3 1e4 5e4 1e5 5e5 1e6 2.5e6 5e6 1e7 2e7 ${fparse run_time -1e3} ${run_time}'
file_base = '${group_name}_nominal_Pin'
[base_out]
type = CSV
file_base = '${group_name}_Pin_base_out'
show = 'burnup_max temperature_fuel_avg temperature_clad_avg ave_temperature_interior swelling_vol_percent disp_x_fuel_radial_surface_max'
sync_only = true
[]
[checkpoint]
type = Checkpoint
time_step_interval = 10
[]
[exodus]
type = Exodus
[]
[sync]
type = CSV
file_base = '${group_name}_nominal_Pin_sync'
sync_only = true
[]
[console]
type = Console
show = 'time_step_size temperature_fuel_avg temperature_fuel_centerline_max stress_vonmises_fuel_max stress_hydro_fuel_max stress_hydro_fuel_min strain_axial_fuel_avg burnup_avg fission_rate_avg porosity_fuel_avg time_step_limit disp_x_fuel_radial_surface_max disp_x_fuel_radial_surface_avg swelling_dia_percent swelling_vol_percent fuel_volume'
[]
[performance_metrics]
type = CSV
file_base = '${group_name}_nominal_performance_metrics_Pin'
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[performance_metrics_sync]
type = CSV
sync_only = true
file_base = '${group_name}_nominal_performance_metrics_Pin_sync'
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temperature'
show_var_residual_norms = true
[]
(assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/2pt8MPa/25C_sec/25C_sec_Hardy_Tube_Test_2pt8MPa.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[gen]
type = FuelPinMeshGenerator
include_fuel = false
include_clad = true
pellet_outer_radius = 0.0072527
clad_gap_width = 0.0
clad_top_gap_height = 0.0
clad_bot_gap_height = 0.0
clad_thickness = 0.38e-3
pellet_height = 0.5
pellet_quantity = 1
clad_mesh_density = customize
nx_c = 2
ny_c = 50
elem_type = QUAD8
[]
[]
[Variables]
[temperature]
initial_condition = 600.0
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 40'
y = '1 1'
[]
[temp_function]
type = PiecewiseLinear
y = '600 1600'
[]
[temperature_profile]
type = PiecewiseBilinear
y = '0 40'
x = '0 0.25224 0.50448'
z = '0.995 1.01 0.995 0.995 1.01 0.995'
axis = 1
[]
[inner_temperature]
type = CompositeFunction
functions = 'temp_function temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
factor = 0.0
function = pressure_function
[]
[inner_surface]
boundary = 'clad_inside_right clad_inside_bottom clad_inside_top'
function = pressure_function
[]
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 1001
value = 0.0
[]
[x_fix]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
function = inner_temperature
variable = temperature
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[Materials]
[clad_thermal]
type = ZryThermal
block = clad
zry_thermal_properties_model = MATPRO
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = true
matpro_poissons_ratio = true
temperature = temperature
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = true
model_thermal_creep = true
temperature_loca_creep_begin = 840 # values from the report
temperature_standard_thermal_creep_end = 975
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 600.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-5
nl_abs_tol = 1.0e-8
start_time = 0
n_startup_steps = 1
end_time = 40
dtmax = 1
dtmin = 0.0000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 1.0
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = all_clad_interior
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = total_hoop_strain
[]
[max_disp_x]
type = NodalExtremeValue
block = clad
value_type = max
variable = disp_x
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[csv]
type = CSV
[]
[chkfile]
type = CSV
show = 'max_disp_x max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = false
[]
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK3/FK03.i)
# This file was created using BIF with the following inputs:
# FK03/FK03.var - md5sum: 63fb064f9380e246b80d3fb7762c0b71
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[temp]
block = '1 3'
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.039 0.961 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
layer_thickness = layer_thickness_action
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
initial_moles = initial_moles
gas_released = fission_gas_released
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10020.6066633
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.085711070864
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 8.40e25
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
incremental = true
block = '1 3'
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 550000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 200.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-4
variable = disp_x
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(assessment/LWR/validation/LOCA_ANL_cladding_burst_tests/analysis/OCL11/OCL11_ad.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.270
pellet_outer_radius = 4.78e-3
clad_bot_gap_height = 0.001
clad_top_gap_height = 0.013
clad_thickness = 0.71e-3
clad_gap_width = 0.1e-3
pellet_mesh_density = coarse
clad_mesh_density = coarse
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
initial_condition = 300.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0 496.02 520.74 528.12 545.94 551.28 671.52 885.3 1195.74 1410.36 1657.86 1680 1690 1700 1710 1720 1730 1740 1750 1760 1770 1780 1790 1800 1810 1820 1830 1840 1848'
y = '300 300 405.465 482.048 583.351 632.287 634.297 632.825 630.378 631.059 632.59 633 683 733 783 833 883 933 983 1033 1083 1133 1183 1233 1283 1333 1383 1433 1477'
[]
[temperature_profile]
type = PiecewiseBilinear
data_file = 'temp_profile.csv'
axis = 1
[]
[cladding_temperature]
type = CompositeFunction
functions = 'temperature_func temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
use_automatic_differentiation = true
add_variables = true
strain = FINITE
decomposition_method = TaylorExpansion
eigenstrain_names = 'fuel_thermal_strain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
use_automatic_differentiation = true
add_variables = true
strain = FINITE
decomposition_method = TaylorExpansion
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[burst]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = ADMaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = ADMaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = clad
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = clad_outside_right
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = clad_outside_right
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = clad_outside_right
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
primary = 5
secondary = 10
variable = temperature
gap_conductivity = 0.15 # k of He per Netzsch
[]
[]
[BCs]
[clad_surface_temperature]
type = ADFunctionDirichletBC
variable = temperature
boundary = '2'
function = cladding_temperature
[]
[no_x_all]
type = ADDirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = ADDirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = ADDirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[outer_pressure]
boundary = '1 2 3'
factor = 101325
[]
[inner_pressure]
boundary = '4 5 6'
factor = 8.28e6
[]
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.0
inlet_pressure = 101325
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 0.01118
rod_pitch = 1.26e-02 # default
oxide_thickness = scale_thickness
thermal_conductivity = reg_thermal_conductivity
[]
[]
[Materials]
[fuel_thermal]
type = ADHeatConductionMaterial
block = pellet
thermal_conductivity = 3.5
specific_heat = 330.0
[]
[fuel_converter]
type = MaterialADConverter
block = pellet
ad_props_in = 'thermal_conductivity'
reg_props_out = 'reg_thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ADComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ADComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_density]
type = ADStrainAdjustedDensity
block = pellet
strain_free_density = 10980.0 #perfectly dense UO2
[]
[clad_thermal]
type = ADZryThermal
block = clad
temperature = temperature
[]
[clad_converter]
type = MaterialADConverter
block = clad
ad_props_in = 'thermal_conductivity'
reg_props_out = 'reg_thermal_conductivity'
[]
[clad_elasticity_tensor]
type = ADZryElasticityTensor
block = clad
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.5 0.5 0.5 1.0 1.0 1.0"
#hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
#function_names = "F G H L M N"
[]
[clad_zrycreep]
type = ADZryAnisoCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_loca_creep_begin = 501
temperature_standard_thermal_creep_end = 500
fract_beta_phase_name = 'ad_fract_beta_phase'
[]
[thermal_expansion]
type = ADZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = ADStrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[phase_converter]
type = MaterialADConverter
block = clad
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[oxidation]
type = ADZryOxidation
boundary = clad_outside_right
temperature = temperature
clad_inner_radius = 4.88e-3 #checked
clad_outer_radius = 5.59e-3 #checked
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfgain_total
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-04
nl_abs_tol = 1.0e-08
start_time = 0
n_startup_steps = 1
end_time = 1800.0
dtmax = 100
dtmin = 0.0001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10.0
time_dt = '100 10'
time_t = '10 400'
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = clad
value_type = max
variable = fract_beta_phase
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[oxide_thickness]
type = ElementAverageValue
block = clad
variable = scale_thickness
execute_on = TIMESTEP_END
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'max_clad_temp max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
[]
[]
(assessment/nitride/EBRII/SP1/analysis/SP1_Pin_base_action.i)
[GlobalParams]
order = FIRST
energy_per_fission = 3.412e-11 # J/fission
displacements = 'disp_x disp_y'
value_range_behavior = IGNORE
temperature = temperature
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
converge_on = 'disp_x disp_y temperature'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${cladding_liner_thickness}
pellet_outer_radius = ${fuel_radius}
pellet_height = ${fuel_height}
clad_top_gap_height = ${plenum_height}
clad_gap_width = ${cladding_gap_width}
bottom_clad_height = ${cladding_bottom_top_plug_length}
top_clad_height = ${cladding_bottom_top_plug_length}
clad_bot_gap_height = ${gap_bottom_length}
liner_thickness = ${liner_thickness}
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = 3
ny_cl = 3
nx_liner = 2
pellet_quantity = 1
elem_type = QUAD4
[]
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 ${time_end_ramp_up} ${time_start_ramp_down} ${time_end_ramp_down}'
y = '0 ${avg_lin_power} ${avg_lin_power} 0'
[]
[coolant_wall_temperature]
type = ParsedFunction
expression = 'if(t<${time_end_ramp_up}, ${initial_temperature} + t*(${a}*y^2 + ${b}*y + ${c} - ${initial_temperature})/(${time_end_ramp_up}),if(t<${time_start_ramp_down},${a}*y^2 + ${b}*y + ${c}, if(t<${time_end_ramp_down}, ${a}*y^2 + ${b}*y + ${c} + (t-${time_start_ramp_down})*(${initial_temperature}-(${a}*y^2 + ${b}*y + ${c}))/(${time_end_ramp_down}-${time_start_ramp_down}),${initial_temperature}))) '
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 ${run_time}'
y = '15.1e6 15.1e6' # unknown, Li coolant
[]
[plenum_pressure]
type = ConstantFunction
value = ${initial_plenum_pressure}
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
block = 'pellet liner clad'
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temperature
primary_boundary = '5' # clad_inside_right
secondary_boundary = '10' # pellet_outer_radial_surface
initial_moles = initial_moles # coupling to a postprocessor which supplies the initial plenum/gap gas mass
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = 5 # clad_inside_right
secondary = 10 # pellet_outer_radial_surface
c_normal = 1e+11
correct_edge_dropping = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12' # centerline
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = '1' # clad_outside_bottom
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = '20' # bottom_of_bottom_pellet
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3' # clad_outside_bottom, clad_outside_right, clad_outside_top
function = coolant_press_ramp
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9 # inside_surfaces
initial_pressure = ${initial_plenum_pressure}
startup_time = 0
R = ${R}
initial_temperature = ${initial_temperature}
temperature = ave_temperature_interior # coupling to post processor to get gas temperature approximation
output_initial_moles = initial_moles # coupling to post processor to get initial fill gas mass
volume = gas_volume # coupling to post processor to get gas volume
output = plenum_pressure # coupling to post processor to output plenum/gap pressure
[]
[]
[clad_outer_temperature]
type = FunctionDirichletBC
boundary = '1 2 3' # clad_outside_bottom, clad_outside_right, clad_outside_top
function = coolant_wall_temperature
variable = temperature
[]
[]
[NuclearMaterials]
initial_temperature = ${initial_temperature}
fission_operation = 'HighBurnup'
add_variables = true
physics = 'Mechanics Thermal'
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
decomposition_method = TaylorExpansion
volumetric_locking_correction = false
[UN]
[fuel]
block = pellet
strain = FINITE
density = ${density}
additional_generate_output = 'creep_strain_xx creep_strain_yy creep_strain_zz '
rod_linear_power = power_history
axial_power_profile = 1
pellet_radius = ${fuel_radius}
atoms_heavy_metal_per_volume = ${atoms_heavy_metal_per_volume}
automatic_eigenstrain_names = true
un_models = 'Burnup Elastic Creep ThermalExpansion'
properties_to_output = 'youngs_modulus poissons_ratio'
energy_deposited_in_fuel = 0.95
initial_porosity = ${initial_porosity}
stress_free_temperature = ${initial_temperature}
[]
[]
[Tungsten]
[liner]
block = liner
strain = FINITE
incremental = true
automatic_eigenstrain_names = true
Tungsten_models = 'Elastic ThermalExpansion'
stress_free_temperature = ${initial_temperature}
[]
[]
[NbZr]
[clad]
block = clad
strain = FINITE
incremental = true
automatic_eigenstrain_names = true
NbZr_models = 'Elastic ThermalExpansion'
stress_free_temperature = 293.15
[]
[]
[]
[Dampers]
[disp_x]
type = MaxIncrement
variable = disp_x
max_increment = 1e-4
min_damping = 1e-4
[]
[disp_y]
type = MaxIncrement
variable = disp_y
max_increment = 1e-3
min_damping = 1e-4
[]
[temperature]
type = MaxIncrement
variable = temperature
max_increment = 50
min_damping = 1e-4
[]
[]
[Executioner]
type = Transient
# With mortar contact
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-15'
snesmf_reuse_base = false
verbose = true
line_search = 'none'
l_max_its = 60
nl_max_its = 20
nl_rel_tol = 5e-6
nl_abs_tol = 5e-9
end_time = ${run_time}
dtmin = 1
dtmax = 5e4
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = time_step_limit
force_step_every_function_point = true
timestep_limiting_function = power_history
dt = 10
[]
[]
[Postprocessors]
# elemental temperatures
[temperature_fuel_avg]
type = ElementAverageValue
variable = temperature
block = pellet
execute_on = 'initial timestep_end'
[]
[temperature_fuel_max]
type = ElementExtremeValue
variable = temperature
block = pellet
[]
[temperature_fuel_min]
type = ElementExtremeValue
variable = temperature
block = pellet
value_type = min
[]
[temperature_clad_avg]
type = ElementAverageValue
variable = temperature
block = clad
execute_on = 'initial timestep_end'
[]
[temperature_clad_max]
type = ElementExtremeValue
variable = temperature
block = clad
[]
[temperature_clad_min]
type = ElementExtremeValue
variable = temperature
block = clad
value_type = min
[]
[temperature_liner_avg]
type = ElementAverageValue
variable = temperature
block = liner
execute_on = 'initial timestep_end'
[]
[temperature_liner_max]
type = ElementExtremeValue
variable = temperature
block = liner
[]
[temperature_liner_min]
type = ElementExtremeValue
variable = temperature
block = liner
value_type = min
[]
[ave_temperature_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = '9' # inside_surfaces
variable = temperature
execute_on = 'initial linear'
[]
[temperature_fuel_centerline_avg]
type = AxisymmetricCenterlineAverageValue
boundary = '12' # centerline
variable = temperature
[]
[temperature_fuel_centerline_max]
type = NodalExtremeValue
boundary = '12' # centerline
variable = temperature
[]
[temperature_fuel_centerline_min]
type = NodalExtremeValue
boundary = '12' # centerline
variable = temperature
value_type = min
[]
[temperature_fuel_surface_avg]
type = SideAverageValue
boundary = '10' # pellet_outer_radial_surface
variable = temperature
[]
[temperature_fuel_surface_max]
type = NodalExtremeValue
boundary = '10' # pellet_outer_radial_surface
variable = temperature
[]
[temperature_fuel_surface_min]
type = NodalExtremeValue
boundary = '10' # pellet_outer_radial_surface
variable = temperature
value_type = min
[]
# stresses
[stress_vonmises_fuel_avg]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[stress_vonmises_fuel_max]
type = ElementExtremeValue
variable = vonmises_stress
block = pellet
[]
[stress_vonmises_fuel_min]
type = ElementExtremeValue
variable = vonmises_stress
value_type = min
block = pellet
[]
[stress_hydro_fuel_avg]
type = ElementAverageValue
variable = hydrostatic_stress
block = pellet
[]
[stress_hydro_fuel_max]
type = ElementExtremeValue
variable = hydrostatic_stress
block = pellet
[]
[stress_hydro_fuel_min]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
# strain information
[strain_solid_swelling_fuel_avg]
type = ElementAverageValue
variable = solid_swelling
block = pellet
[]
[strain_volumetric_fuel_avg]
type = ElementAverageValue
variable = firstinv_strain
block = pellet
[]
[strain_axial_fuel_avg]
type = ParsedPostprocessor
pp_names = 'disp_y_fuel_top_surface_avg disp_y_fuel_bottom_surface_avg'
expression = '(disp_y_fuel_top_surface_avg - disp_y_fuel_bottom_surface_avg) / ${fuel_height}'
[]
[disp_y_fuel_top_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = '11' # top_of_top_pellet
[]
[disp_y_fuel_top_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = '11' # top_of_top_pellet
[]
[disp_y_fuel_bottom_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = '20' # bottom_of_bottom_pellet
[]
[disp_y_fuel_bottom_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = '20' # bottom_of_bottom_pellet
[]
[disp_x_fuel_radial_surface_max]
type = NodalExtremeValue
variable = disp_x
boundary = '10' # pellet_outer_radial_surface
[]
[disp_x_fuel_radial_surface_avg]
type = SideAverageValue
variable = disp_x
boundary = '10' # pellet_outer_radial_surface
[]
[burnup_avg]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[burnup_max]
type = ElementExtremeValue
block = pellet
variable = burnup
[]
[fission_rate_avg]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity_fuel_avg]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[porosity_fuel_max]
type = ElementExtremeValue
variable = porosity
block = pellet
[]
[porosity_fuel_min]
type = ElementExtremeValue
variable = porosity
value_type = min
block = pellet
[]
[swelling_dia_percent]
type = ParsedPostprocessor
pp_names = 'disp_x_fuel_radial_surface_avg'
expression = 'disp_x_fuel_radial_surface_avg / 3.14159 / ${fuel_radius} * 100'
[]
[fuel_volume]
type = VolumePostprocessor
block = pellet
execute_on = 'TIMESTEP_END INITIAL'
use_displaced_mesh = true
[]
[swelling_vol_percent]
type = ParsedPostprocessor
pp_names = 'fuel_volume'
expression = '(fuel_volume - ${fuel_volume}) / ${fuel_volume} * 100'
[]
[gas_volume]
type = InternalVolume
boundary = '9' # inside_surfaces
execute_on = 'initial linear'
[]
# extras
[actual_time_step_limit]
type = MaterialTimeStepPostprocessor
outputs = none
block = 'pellet'
[]
[time_step_limit]
type = ParsedPostprocessor
expression = 'if(actual_time_step_limit > 1e6, 1e6, actual_time_step_limit)'
pp_names = 'actual_time_step_limit'
[]
[]
[PerformanceMetricOutputs]
outputs = 'performance_metrics performance_metrics_sync exodus console base_out'
[]
[Outputs]
perf_graph = true
csv = true
sync_times = '1e2 1e3 5e3 1e4 5e4 1e5 5e5 1e6 2.5e6 5e6 1e7 2e7 3e7 4e7 ${fparse run_time -1e3} ${run_time}'
file_base = '${group_name}_nominal_Pin'
[base_out]
type = CSV
file_base = '${group_name}_Pin_base_action_out'
show = 'burnup_max temperature_fuel_avg temperature_clad_avg temperature_liner_avg ave_temperature_interior '
sync_only = true
[]
[checkpoint]
type = Checkpoint
time_step_interval = 10
[]
[exodus]
type = Exodus
[]
[sync]
type = CSV
file_base = '${group_name}_nominal_Pin_sync'
sync_only = true
[]
[console]
type = Console
show = 'time_step_size temperature_fuel_avg temperature_fuel_centerline_max stress_vonmises_fuel_max stress_hydro_fuel_max stress_hydro_fuel_min strain_axial_fuel_avg burnup_avg fission_rate_avg porosity_fuel_avg time_step_limit disp_x_fuel_radial_surface_max disp_x_fuel_radial_surface_avg swelling_dia_percent swelling_vol_percent fuel_volume'
[]
[performance_metrics]
type = CSV
file_base = '${group_name}_nominal_performance_metrics_Pin'
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[performance_metrics_sync]
type = CSV
sync_only = true
file_base = '${group_name}_nominal_performance_metrics_Pin_sync'
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temperature'
show_var_residual_norms = true
[]
(test/tests/fuel_pin_mesh_generator/chamfer_only.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
nx_chamfer = 1
nx_flat = 3
nx_dish = 0
chamfer_width = 5e-4
chamfer_height = 1.6e-4
dish_depth = 3e-4
dish_radius = 0
pellet_mesh_density = customize
pellet_quantity = 2
use_legacy_block_ids = false
fuel_base_name = fuel
ny_p = 15
nx_c = 1
ny_cu = 1
ny_cl = 1
clad_mesh_density = customize
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[pellet_centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK1/FK01.i)
# This file was created using BIF with the following inputs:
# FK01.var - md5sum: 123016ae8f3283a45bae816a366f93b1
# ../pulse_rev1.tpl - md5sum: 8d6b8b4bce1dd830dea2d8522009e514
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.04298
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 0.0473684210526 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseBilinear
data_file = RadialPowerProfile.csv
axis = 0
[]
[radial_burnup_profile]
type = PiecewiseBilinear
data_file = RadialBurnupProfile.csv
axis = 0
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.039 0.961 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
friction_coefficient = 2.5
normal_smoothing_distance = 0.1
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 1.0e-6
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[coolant_temp]
type = DirichletBC
boundary = '1 2 3'
variable = temp
value = 293
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10020.6066633
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.085711070864
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 8.40e25
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = 0.01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
block = 1
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 500000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[contactslip]
type = ContactSlipDamper
primary = 5
secondary = 8
min_damping_factor = 0.05
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(test/tests/ifba_he_production/fill_gas_xenon_w_ifba.i)
#
# 2-D RZ One Pellet Test - IFBA using Xenon as fill gas
#
# This test is of a single pellet with cladding and a specified initial
# pressure of Xe fill gas. In addition, an IFBA layer is added which will
# generate He gas to be added to the plenum. The postprocessor interior_temp
# should be the same as the pure Xe test case initially and as the He gas is
# added to the plenum from the IFBA, the interior_temp value should approach
# the He fill gas test case (both in the doc subdirectory).
#
# This model demonstrates that the gas conductance for the plenum is being
# updated for the He gas generated by the IFBA layer.
#
initial_fuel_density = 10431.0 #95% TD (TD = 10980)
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
displacements = 'disp_x disp_y'
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 1
nx_p = 1
nx_c = 1
ny_cu = 1
ny_c = 1
ny_cl = 1
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[grain_radius]
block = '3'
initial_condition = 5e-6
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 20e3 # 20 kW/m peak power.
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = fuel_thermal_strain
[]
[clad]
block = 1
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = clad_thermal_strain
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
value = 5.3548e+14
fission_rate_function = power_history
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
gas_released = 'fis_gas_released he_prod'
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_gas_types = Xe
initial_fractions = 1
released_gas_types = 'Kr Xe;
He'
released_fractions = '0.153 0.847;
1'
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Clad_Temp]
type = DirichletBC
variable = temp
boundary = '2'
value = 580.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
startup_time = 0.0
material_input = 'fis_gas_released he_prod'
output_initial_moles = initial_moles
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 298
eigenstrain_name = fuel_thermal_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = '3'
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
diff_coeff_option = TURNBULL_D1_D2
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[fclad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 298
eigenstrain_name = clad_thermal_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 5.3e7 # 1.7 years (~3% burnup)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e5 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial linear'
[]
[fis_gas_produced] # fission gas produced (moles)
type = ElementIntegralFisGasGeneratedSifgrs
block = '3'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = '3'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = '3'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = '3'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01 # change: length of fuel stack in meters (1 pellet height)
[]
[he_prod]
type = IFBAHeProduction
zrb2_load = 1.181e-4
ifba_len = 1.0e-2
b10_enrich = 0.50
zrb2_rel_dens = 0.7
model = burnup
u235_enrich = 0.045
burnup = average_burnup
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup burnup he_prod interior_temp plenum_pressure'
file_base = fill_gas_xenon_w_ifba_check
[]
[out]
type = CSV
delimiter = ' '
[]
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/UFE019/UFE019.i)
################################################################################
#
# Description: Calvert Cliffs UFE019
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file UFE019_power.csv
# axial peaking factor file UFE019_axial_peaking.csv
# flux boundary condition file UFE019_fast_flux.csv
#
################################################################################
initial_fuel_density = 10396.59
[GlobalParams]
density = ${initial_fuel_density} #94.75 %TD Assume TD = 10972.65 kg/m3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.29773
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
block = '1 3'
[]
[disp_y]
block = '1 3'
[]
[temp]
initial_condition = 293
block = '1 3'
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
block = '1 3'
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = UFE019_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = UFE019_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 140582036 140582396'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 140582036 140582396'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = UFE019_fast_flux.csv
format = columns
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
variable = oxide_thickness
boundary = 2
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0398 .9602 0 0 0 0'
RPF = RPF
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = 5
secondary_boundary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
contact_pressure = mechanical_normal_lm
layer_thickness = layer_thickness_action
thermal_lm_scaling = 1.0e-2
correct_edge_dropping = true
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+14
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
correct_edge_dropping = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap = 190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -pc_factor_shift_type -pc_factor_shift_amount -mat_mffd_err'
petsc_options_value = 'lu superlu_dist NONZERO 1e-15 1e-5'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 140582396
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFM070/BFM070.i)
################################################################################
#
# Description: Calvert Cliffs BFM070
#
#
#
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFM070_power.csv
# axial peaking factor file BFM070_axial_peaking.csv
# flux boundary condition file BFM070_fast_flux.csv
################################################################################
initial_fuel_density = 10386.93
[GlobalParams]
density = ${initial_fuel_density} #94.662 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.32168
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 3.85e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFM070_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFM070_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 179225682 179226042'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 179225682 179226042'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFM070_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10386.93
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 179226042
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
print_linear_residuals = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/3pt8MPa/100C_sec/100C_sec_Hardy_Tube_Test_3pt8MPa.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[gen]
type = FuelPinMeshGenerator
include_fuel = false
include_clad = true
pellet_outer_radius = 0.0072527
clad_gap_width = 0.0
clad_top_gap_height = 0.0
clad_bot_gap_height = 0.0
clad_thickness = 0.38e-3
pellet_height = 0.5
pellet_quantity = 1
clad_mesh_density = customize
nx_c = 2
ny_c = 50
elem_type = QUAD8
[]
[]
[Variables]
[temperature]
initial_condition = 600.0
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 40'
y = '1 1'
[]
[temp_function]
type = PiecewiseLinear
y = '600 1600'
[]
[temperature_profile]
type = PiecewiseBilinear
y = '0 40'
x = '0 0.25224 0.50448'
z = '0.995 1.01 0.995 0.995 1.01 0.995'
axis = 1
[]
[inner_temperature]
type = CompositeFunction
functions = 'temp_function temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
factor = 0.0
function = pressure_function
[]
[inner_surface]
boundary = 'clad_inside_right clad_inside_bottom clad_inside_top'
function = pressure_function
[]
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 1001
value = 0.0
[]
[x_fix]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
function = inner_temperature
variable = temperature
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[Materials]
[clad_thermal]
type = ZryThermal
block = clad
zry_thermal_properties_model = MATPRO
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = true
matpro_poissons_ratio = true
temperature = temperature
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = true
model_thermal_creep = true
temperature_loca_creep_begin = 840 # values from the report
temperature_standard_thermal_creep_end = 975
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 600.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-5
nl_abs_tol = 1.0e-8
start_time = 0
n_startup_steps = 1
end_time = 40
dtmax = 1
dtmin = 0.0000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 1.0
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = all_clad_interior
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = total_hoop_strain
[]
[max_disp_x]
type = NodalExtremeValue
block = clad
value_type = max
variable = disp_x
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[csv]
type = CSV
[]
[chkfile]
type = CSV
show = 'max_disp_x max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/5pt5MPa/100C_sec/100C_sec_Hardy_Tube_Test_5pt5MPa.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[gen]
type = FuelPinMeshGenerator
include_fuel = false
include_clad = true
pellet_outer_radius = 0.0072527
clad_gap_width = 0.0
clad_top_gap_height = 0.0
clad_bot_gap_height = 0.0
clad_thickness = 0.38e-3
pellet_height = 0.5
pellet_quantity = 1
clad_mesh_density = customize
nx_c = 2
ny_c = 50
elem_type = QUAD8
[]
[]
[Variables]
[temperature]
initial_condition = 600.0
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 40'
y = '1 1'
[]
[temp_function]
type = PiecewiseLinear
y = '600 1600'
[]
[temperature_profile]
type = PiecewiseBilinear
y = '0 40'
x = '0 0.25224 0.50448'
z = '0.995 1.01 0.995 0.995 1.01 0.995'
axis = 1
[]
[inner_temperature]
type = CompositeFunction
functions = 'temp_function temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
factor = 0.0
function = pressure_function
[]
[inner_surface]
boundary = 'clad_inside_right clad_inside_bottom clad_inside_top'
function = pressure_function
[]
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 1001
value = 0.0
[]
[x_fix]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
function = inner_temperature
variable = temperature
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[Materials]
[clad_thermal]
type = ZryThermal
block = clad
zry_thermal_properties_model = MATPRO
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = true
matpro_poissons_ratio = true
temperature = temperature
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = true
model_thermal_creep = true
temperature_loca_creep_begin = 840 # values from the report
temperature_standard_thermal_creep_end = 975
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 600.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-5
nl_abs_tol = 1.0e-8
start_time = 0
n_startup_steps = 1
end_time = 40
dtmax = 1
dtmin = 0.0000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 1.0
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = all_clad_interior
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = total_hoop_strain
[]
[max_disp_x]
type = NodalExtremeValue
block = clad
value_type = max
variable = disp_x
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[csv]
type = CSV
[]
[chkfile]
type = CSV
show = 'max_disp_x max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-2kW.i)
################################################################################
#
# Description: LOCA MT-4 Test with constant power level of 1.2 kW/m
#
#
# External files:
# axial peaking factor file MT4_axial_peaking.csv
#
################################################################################
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
group_variables = 'disp_x disp_y'
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 6.1e-4
pellet_mesh_density = customize
ny_p = 100
nx_c = 4
nx_p = 12
pellet_outer_radius = .00413
ny_cu = 3
ny_c = 100
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.66
ny_cl = 3
clad_top_gap_height = 0.18613
clad_gap_width = 7.5e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 253
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[]
[AuxVariables]
[temp_initial]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 7.8e-6 # 2D grain radius
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[hmode]
order = CONSTANT
family = MONOMIAL
[]
[htype]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 110'
y = '1.2e3 1.2e3'
[]
[hmode_function]
type = PiecewiseConstant
x = '0 57 110'
y = '9 10 10'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = MT4_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '0 110'
y = '0.28 0.28'
scale_factor = 1e6
[]
[temp_func]
type = ParsedFunction
expression = '-24.096*y*y+152.47*y+437.81'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors' # W/m
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz elastic_strain_yy strain_xx strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress' #plastic_strain_xx plastic_strain_yy plastic_strain_zz
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
axial_power_profile = axial_peaking_factors
factor = 0.16e15 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = hmode
boundary = 2
[]
[htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = htype
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = clad
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
block = clad
execute_on = timestep_end
[]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
block = clad
execute_on = timestep_end
[]
[burst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
# TODO: Have StandardLWRFuelRodOutputs create this when the feature in issue #1054 is
# developed.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.66478
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00413 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0293 .9707 0 0 0 0'
RPF = RPF
density = 10431.0 #95 %TD Assume TD = 10980 kg/cm3
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
normalize_penalty = true
model = frictionless
# model = coulomb
formulation = penalty
# friction_coefficient = 1.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.0 # Pa
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 9.3e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 311 # K
inlet_pressure = 0.28e6 # Pa
# inlet_massflux = massfluxfunc # kg/m^2-sec
rod_diameter = 0.00963 # m
rod_pitch = 1.275e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
heat_transfer_mode = hmode_function
heat_transfer_coefficient = 0.0000001 #W/m^2-K
# heat_transfer_mode = 10
htc_correlation_type = 1
flooding_time = 57.0
flooding_rate = 0.127 # m/s
initial_temperature = 1140 # K
initial_power = 1.776 # kW/m
blockage_ratio = 0.0 #
fuel_stack_length = 3.66 # m
reflooding_model = 1
compute_enthalpy = false
[]
[]
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = temp_initial
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0 #95 %TD Assume TD = 10980 kg/cm3
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
# initial_grain_radius = 6.552e-6 # 2D grain radius 4.2e-6
grain_radius = grain_radius
gbs_model = true
burnup = burnup
# compute_swelling = true
transient_option = MICROCRACKING
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 10431 #95 %TD Assume TD = 10980 kg/cm3
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temp
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_standard_thermal_creep_end = 700.0
temperature_loca_creep_begin = 900.0
max_inelastic_increment = 1e-4
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
temperature = temp
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = temp_initial
eigenstrain_name = clad_thermal_eigenstrain
[]
[phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temp
fraction_beta_phase = fract_beta_phase
outputs = all
output_properties = 'failed burst_stress'
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0.0
end_time = 58.2
dtmax = 5
dtmin = 0.00001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 0.01
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
execute_on = timestep_end
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
fission_rate = fission_rate
variable = temp
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.66 # rod height
execute_on = timestep_end
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_creep_rate]
type = ElementExtremeValue
block = clad
value_type = max
variable = creep_rate_aux
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 40
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.2
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9144
pellet_outer_radius = 2.794e-3
pellet_inner_radius = 6.985e-4
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 101.6e-6
clad_thickness = 0.5334e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.057
elem_type = QUAD8
nx_c = 4
ny_c = 1000
nx_p = 10
ny_p = 500
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
scaling = 1
[]
[]
[AuxVariables]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fraction_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 0.854004932 0.854004932'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 2.99513e+19 2.99513e+19'
[]
[axial_power_profile]
type = PiecewiseBilinear
x = '0.0334152 0.09468 0.1559448 0.2162952 0.27756 0.3388248 0.3991752 0.46044 0.5217048 0.5820552 0.64332 0.7045848 0.7649352 0.8262 0.8874648'
y = '0 31858942.74'
z = '5493.43832 7183.727034 29157.48031 34228.34646 37608.92388 40144.35696 41412.07349 42257.21785 41834.64567 39721.78478 37608.92388 33805.77428 28312.33596 4225.721785 2535.433071 5041.338583 6592.519685 26757.87402 31411.41732 34513.77953 36840.55118 38003.93701 38779.52756 38391.73228 36452.75591 34513.77953 31023.62205 25982.28346 3877.952756 2326.771654'
scale_factor = 1
axis = 1
[]
[average_power_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 24264.05646 24264.05646'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.2
axial_power_profile = axial_power_profile
rod_ave_lin_pow = fraction_history
pellet_diameter = 0.005588
execute_on = timestep_begin
pellet_inner_diameter = 0.001397
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 0.151e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 0.151e6
inlet_massflux = 1687.43
rod_diameter = 6.858e-3
rod_pitch = 1.7e-2
linear_heat_rate = fraction_history
axial_power_profile = axial_power_profile
coolant_material = sodium
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = 0.2
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
outputs = exodus
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius_const = 10e-06
bubble_gb_limit = 1.0e+11
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fast_neutron_flux]
type = GenericFunctionMaterial
block = clad
prop_names = fast_neutron_flux
prop_values = fast_neutron_flux_function
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 31858942.74
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = fraction_history
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.9144 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = fftf_fo2_L09_new_chkfile
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(test/tests/fuel_pin_mesh_generator/discrete.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
nx_chamfer = 1
nx_flat = 3
nx_dish = 5
chamfer_width = 5e-4
chamfer_height = 1.6e-4
dish_depth = 3e-4
dish_radius = .002
pellet_mesh_density = customize
pellet_quantity = '3 2'
use_legacy_block_ids = false
fuel_base_name = fuel
ny_p = '15 16'
nx_c = 1
ny_cu = 1
ny_cl = 1
clad_mesh_density = customize
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[pellet_centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/Super_Ramp/analysis/PK62/PK62_weighted_gap_VCP.i)
# This assessment case requires increasing the default automatic differentiation
# vector (AD size). At the time of writing, the default size is 50. This test
# requires, at least, 56. The minimum size required for a test to run can be
# specified in the 'assesment' file via "min_ad_size". To configure MOOSE
# to increase the AD vector size, one can use the command below in the MOOSE
# folder to expand this size, e.g., to 200:
#
# ./configure --with-derivative-type=sparse --with-ad-indexing-type=global --with-derivative-size=200
# physical constants
R = 8.3143 # J/mol*K -- THIS SHOULD BE EDITED TO USE PHYSICALCONSTANTS' VALUE
# fuel isotope fractions and fission energy
energy_per_fission = 3.28451e-11 # J/fission
isotope_fraction_U235 = 0.02985
isotope_fraction_U238 = 0.97015
isotope_fraction_Pu239 = 0.0
isotope_fraction_Pu240 = 0.0
isotope_fraction_Pu241 = 0.0
isotope_fraction_Pu242 = 0.0
# rod geometry
pellet_quantity = 29 # (-)
pellet_height = 0.010862 # m
pellet_outer_radius = 4.57e-3 # m
clad_gap_width = 75.0e-6 # m
clad_thickness = 0.725e-3 # m
clad_bot_gap_height = 1.0e-3 # m
bottom_clad_height = 15.5e-3 # m
top_clad_height = 15.5e-3 # m
clad_top_gap_height = 32.5e-3 # m
fuel_volume_ratio = 1.0 # (-)
rod_input_power_scale_factor = 0.376004 # m (rod height)
# variable and kernel initial values
initial_temperature = 293.15 # K
gravity_constant = -9.81 # m/s^2
# fuel/cladding contact
c_normal = 1e+05 # (-)
jump_distance_model = 'LANNING'
roughness_primary = 2e-6 # (-)
roughness_secondary = 1e-6 # (-)
roughness_coef = 3.2 # (-)
relocation_activation1 = 5000 # W/m
max_relocation_recovery_fraction = 0.5 # (-)
relocation_scaling_factor = 1 # (-)
# plenum parameters
initial_plenum_pressure = 2.25e6 # Pa
startup_time = 0 # s
# fuel/clad material properties
initial_fuel_density = 10420.0 # kg/m^3
initial_fuel_porosity = 0.049 # (-)
initial_grain_radius = 17.16e-6 # m
fuel_cracking_stress = 1.68e8 # Pa
fuel_shear_retention_factor = 0.1 # (-)
fuel_max_stress_correction = 0 # (-)
stress_free_temperature = 293.15 # K
cladding_density = 6550.0 # kg/m^3
# numerical options
damper_max_temperature_increment = 150.0 # K (was 30 K)
l_max_its = 35
l_tol = 1e-5
nl_max_its = 30
nl_rel_tol = 2e-6
nl_abs_tol = 1e-5
start_time = 0.0 # s
n_startup_steps = 1
dtmax = 1.0e6 # s
dtmin = 1.0 # s
Timestepper_dt = 100 # s
Timestepper_optimal_iterations = 15
Timestepper_iteration_window = 3
# irradiation history
end_time = 76630068.0 # s
# data files
power_history_data_file = 'alhr_history.csv'
axial_power_factors_data_file = 'axial_lhr_factors.csv'
clad_out_temp_data_file = 'temp_outer_clad_history.csv'
axial_temp_factors_data_file = 'axial_temp_factors.csv'
coolant_pressure_data_file = 'pressure_coolant.csv'
fast_neutron_flux_data_file = 'fast_neutron_flux.csv'
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = FIRST
family = LAGRANGE
energy_per_fission = ${energy_per_fission}
volumetric_locking_correction = true
initial_porosity = ${initial_fuel_porosity}
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 80
patch_update_strategy = iteration
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = ${pellet_quantity}
pellet_height = ${pellet_height}
pellet_outer_radius = ${pellet_outer_radius}
pellet_mesh_density = customize
nx_p = 11
ny_p = 168
clad_mesh_density = customize
nx_c = 4
ny_c = 84
clad_gap_width = ${clad_gap_width}
clad_thickness = ${clad_thickness}
clad_bot_gap_height = ${clad_bot_gap_height}
bottom_clad_height = ${bottom_clad_height}
top_clad_height = ${top_clad_height}
clad_top_gap_height = ${clad_top_gap_height}
ny_cu = 3
ny_cl = 3
elem_type = QUAD4
[]
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
initial_condition = ${initial_temperature}
block = '1 3'
[]
[disp_x]
order = FIRST
family = LAGRANGE
block = '1 3'
scaling = 1.0e3
[]
[disp_y]
order = FIRST
family = LAGRANGE
block = '1 3'
scaling = 1.0e3
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = ${power_history_data_file}
format = columns
[]
[axial_power_factors]
type = PiecewiseBilinear
data_file = ${axial_power_factors_data_file}
axis = 1
[]
[clad_out_temp]
type = PiecewiseLinear
data_file = ${clad_out_temp_data_file}
format = columns
[]
[axial_temp_factors]
type = PiecewiseBilinear
data_file = ${axial_temp_factors_data_file}
axis = 1
[]
[clad_temp_bc]
type = CompositeFunction
functions = 'clad_out_temp axial_temp_factors'
[]
[coolant_pressure]
type = PiecewiseLinear
data_file = ${coolant_pressure_data_file}
format = columns
[]
[fast_flux]
type = PiecewiseLinear
data_file = ${fast_neutron_flux_data_file}
format = columns
[]
[axial_power_constant]
type = ConstantFunction
value = 1
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = ${initial_grain_radius}
[]
[porosity]
order = CONSTANT
family = MONOMIAL
block = pellet
initial_condition = ${initial_fuel_porosity}
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[sat_coverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gaseous_porosity]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[layered_average_contact_pressure]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
temperature = temperature
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
temperature = temperature
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[gravity]
type = Gravity
variable = disp_y
value = ${gravity_constant}
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = fast_flux
execute_on = timestep_begin
[]
[fast_neutron_fluence]
block = clad
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[porosity]
type = PorosityAuxUO2
block = pellet
variable = porosity
execute_on = linear
[]
[pelletid]
type = PelletIdAux
block = pellet
variable = pellet_id
fuel_pin_geometry = pin_geometry
number_pellets = ${pellet_quantity}
execute_on = initial
[]
[oxi_thickness]
type = MaterialRealAux
variable = oxide_thickness
property = oxide_scale_thickness
boundary = 2
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
[]
[stcvrg]
type = MaterialRealAux
variable = sat_coverage
property = sat_coverage
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
[]
[gaspor]
type = MaterialRealAux
variable = gaseous_porosity
property = gaseous_porosity
[]
[fuel_conductivity]
type = MaterialRealAux
variable = thermal_conductivity
property = thermal_conductivity
[]
[layered_average_contact_pressure]
type = SpatialUserObjectAux
block = pellet
variable = layered_average_contact_pressure
execute_on = nonlinear
user_object = layered_average_contact_pressure
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
block = pellet
execute_on = nonlinear
[]
[]
[Burnup]
[burnup]
block = pellet
fuel_volume_ratio = ${fuel_volume_ratio}
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
num_radial = 80
num_axial = 20
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '${isotope_fraction_U235} ${isotope_fraction_U238} ${isotope_fraction_Pu239} ${isotope_fraction_Pu240} ${isotope_fraction_Pu241} ${isotope_fraction_Pu242}'
RPF = RPF
fuel_pin_geometry = pin_geometry
[]
[]
[Contact]
[mechanical]
model = frictionless
formulation = mortar
primary = 5
secondary = 10
c_normal = ${c_normal}
[]
[]
[ThermalContactMortar]
[thermal]
secondary_variable = temperature
primary_boundary = 5
secondary_boundary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = ${jump_distance_model}
plenum_pressure = plenum_pressure
roughness_primary = ${roughness_primary}
roughness_secondary = ${roughness_secondary}
roughness_coef = ${roughness_coef}
contact_pressure = mechanical_normal_lm
layer_thickness = layer_thickness_action
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = 5
outer_surfaces = 10
temperature = temperature
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temperature
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_pressure
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = ${initial_plenum_pressure}
startup_time = ${startup_time}
R = ${R}
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temperature
burnup_function = burnup
initial_fuel_density = ${initial_fuel_density}
eigenstrain_name = fuel_volumetric_strain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
density = ${initial_fuel_density}
temperature = temperature
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temperature
burnup_function = burnup
initial_grain_radius = ${initial_grain_radius}
[]
[fuel_stress]
type = ComputeSmearedCrackingStress
block = pellet
cracking_stress = ${fuel_cracking_stress}
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = ${fuel_shear_retention_factor}
max_stress_correction = ${fuel_max_stress_correction}
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
relocation_activation1 = ${relocation_activation1}
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
model_relocation_recovery = true
max_relocation_recovery_fraction = ${max_relocation_recovery_fraction}
relocation_scaling_factor = ${relocation_scaling_factor}
volumetric_swelling_increment = vol_swell_increment
layered_average_contact_pressure = layered_average_contact_pressure
outputs = all
output_properties = 'relocation_strain recovered_relocation_strain'
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMATPROEigenstrain
block = pellet
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = fuel_thermal_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
hydrostatic_stress = hydrostatic_stress
diff_coeff_option = TURNBULL_D1_4D2_D3
transient_option = MICROCRACKING_BURNUP
res_param_option = HETEROGENEOUS_WHITE
ig_bubble_model = NUCLEATION_RESOLUTION
ig_diff_algorithm = polypole2
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
pellet_id = pellet_id
pellet_brittle_zone = pbz
ath_model = true
rod_ave_lin_pow = power_history
axial_power_profile = axial_power_factors
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
fast_neutron_fluence = fast_neutron_fluence
temperature = temperature
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temperature
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = ${stress_free_temperature}
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = ${cladding_density}
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
fuel_pin_geometry = pin_geometry
[]
[]
#### This is the part where VCP is set up
[Preconditioning]
[vcp]
type = VCP
full = true
# condense out the normal LM from mechanical contact and the LM from thermal contact
lm_variable = 'mechanical_normal_lm thermal_thermal_lm'
primary_variable = 'disp_x temperature'
# we use LU to solve the system after condensation
# AMG and other solver types have shown convergence for simpler mechanical/thermo-mechanical contact problems but has not luck with this one
preconditioner = 'LU'
is_lm_coupling_diagonal = true
adaptive_condensation = true
[]
[]
[Dampers]
[maxincrement]
type = MaxIncrement
max_increment = ${damper_max_temperature_increment}
variable = temperature
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
# IMPORTANT: we should not specify the pc_type below, otherwise the VCP setting will be overriden
petsc_options_iname = ' -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = ' 1e-5 NONZERO 1e-15'
snesmf_reuse_base = false
line_search = 'none'
verbose = true
l_max_its = ${l_max_its}
l_tol = ${l_tol}
nl_max_its = ${nl_max_its}
nl_rel_tol = ${nl_rel_tol}
nl_abs_tol = ${nl_abs_tol}
start_time = ${start_time}
n_startup_steps = ${n_startup_steps}
end_time = ${end_time}
dtmax = ${dtmax}
dtmin = ${dtmin}
[TimeStepper]
type = IterationAdaptiveDT
dt = ${Timestepper_dt}
optimal_iterations = ${Timestepper_optimal_iterations}
iteration_window = ${Timestepper_iteration_window}
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = SideAverageValue
boundary = 10
variable = gap_cond
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
block = pellet
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[total_rod_integral_power]
type = ElementIntegralPower
variable = temperature
burnup_function = burnup
block = pellet
[]
[total_rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = ${rod_input_power_scale_factor}
[]
[vol_swell_increment]
type = SideAverageIncrementTensorComponent
boundary = 10
variable = volumetric_swelling_strain
execute_on = nonlinear
[]
[contact_dof]
type = ContactDOFSetSize
variable = 'mechanical_normal_lm'
subdomain = 'secondary_lower'
execute_on = 'nonlinear timestep_end'
[]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage'
execute_on = 'FINAL'
[]
[]
[VectorPostprocessors]
[temperature_post]
type = NodalValueSampler
variable = temperature
boundary = '10'
sort_by = y
[]
[contact_post]
type = NodalValueSampler
variable = mechanical_normal_lm
boundary = '10'
sort_by = y
[]
[disp_x]
type = NodalValueSampler
variable = disp_x
boundary = '10'
sort_by = y
[]
[disp_y]
type = NodalValueSampler
variable = disp_y
boundary = '10'
sort_by = y
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[pbz]
type = PelletBrittleZone
block = pellet
pellet_id = pellet_id
temperature = temperature
fuel_pin_geometry = pin_geometry
number_pellets = ${pellet_quantity}
execute_on = 'initial linear'
[]
[layered_average_contact_pressure]
type = LayeredSideAverage
variable = mechanical_normal_lm
direction = y
num_layers = 1
execute_on = timestep_end
boundary = 10
[]
[]
(test/tests/ifba_he_production/ifba_only_template.i)
#
# 2-D RZ One Pellet IFBA Test - IFBA He generation only
#
# This test is of a single pellet with cladding and a specified initial
# pressure of He fill gas and IFBA layer .
# The initial loading of B-10 is converted to He gas and adds to the
# plenum pressure. No fission gas production is included in this model. This
# allows the effect of the IFBA layer to be seen clearly.
#
# The power is ramped up and held constant to heat the fill gas and establish
# an initial "hot" pressure. Since there is no fission gas production or
# release in this model, the pressure at temperature should be able to be
# calculated and compared to the BISON result.
#
# This case builds on the baseline case. The amount of He added due to IFBA
# can be calculated and the BISON result checked.
#
# This input template is used for a set of tests exercising the main input
# options for the IFBA postprocessor.
#
initial_fuel_density = 10431.0 #95% TD (TD = 10980)
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11 # J/fission (205 Mev)
temperature = temp
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 1
nx_p = 1
nx_c = 1
ny_cu = 1
ny_c = 1
ny_cl = 1
clad_thickness = 5.6e-4
pellet_outer_radius = 0.0041
pellet_height = 0.01
pellet_quantity = 1
clad_bot_gap_height = 1e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_gap_width = 8e-5
plenum_fuel_ratio = 0.150
elem_type = QUAD8
[]
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 5
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[fission_rate]
block = '3'
[]
[burnup]
block = '3'
[]
[grain_radius]
block = '3'
initial_condition = 5e-6
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 1.0e8'
y = '0 1.0 1.0'
scale_factor = 25e3 # 25 kW/m peak power.
[]
[coolant_pressure_ramp]
type = PiecewiseLinear
x = '0 10000'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = 3
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = 'fuel_thermal_strain'
[]
[clad]
block = 1
strain = FINITE
incremental = true
add_variables = true
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
eigenstrain_names = 'clad_thermal_strain'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source_fuel]
type = NeutronHeatSource
variable = temp
block = '3'
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fissionrate]
type = FissionRateGeneral
fission_rate_formulation = GENERIC
variable = fission_rate
block = '3'
value = 5.3548e+14
fission_rate_function = power_history
[]
[burnup]
type = BurnupAux
variable = burnup
block = '3'
fission_rate = fission_rate
molecular_weight = 0.270
[]
[grain_radius]
type = GrainRadiusAux
block = '3'
variable = grain_radius
temperature = temp
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e+14 #1e7
model = frictionless
tangential_tolerance = 5e-4
normal_smoothing_distance = 0.1
normalize_penalty = true
[]
[]
[ThermalContact]
[pellet_clad_thermal]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
jump_distance_model = LANNING
layer_thickness = layer_thickness
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_coef = 3.2
roughness_secondary = 1e-6
roughness_primary = 2e-6
emissivity_primary = 0.8
emissivity_secondary = 0.8
quadrature = true
normal_smoothing_distance = 0.1
gas_released = null
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 1003
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_x_fuel]
type = DirichletBC
variable = disp_x
boundary = 1005
value = 0.0
[]
[Clad_Temp]
type = DirichletBC
variable = temp
boundary = '2'
value = 580.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
factor = 15.5e6
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.50e6
startup_time = 0.0
material_input = he_prod
output_initial_moles = initial_moles
temperature = interior_temp
volume = gas_volume
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = '3'
temperature = temp
burnup = burnup
thermal_conductivity_model = NFIR
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 298
eigenstrain_name = 'fuel_thermal_strain'
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[fclad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 7.5e10
poissons_ratio = 0.3
[]
[clad_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 1
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = 298
eigenstrain_name = 'clad_thermal_strain'
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = '3'
strain_free_density = ${initial_fuel_density}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 25
nl_max_its = 40
nl_rel_tol = 1e-5
nl_abs_tol = 1e-8
dtmax = 1.0e6
dtmin = 1.0
end_time = 5.3e7 # 1.7 years (~3% burnup)
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 30
iteration_window = 4
time_t = '0 1e4 1e8'
time_dt = '1e4 1e6 1e6'
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = fifth
side_order = seventh
[]
verbose = true
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[interior_temp]
type = SideAverageValue
boundary = 9 # cladding interior and pellet exterior
variable = temp
execute_on = 'initial linear'
[]
[power_history]
type = FunctionValuePostprocessor
function = power_history
[]
[dt]
type = TimestepSize
[]
[residual]
type = Residual
[]
[nl_its]
type = NumNonlinearIterations
[]
[lin_its]
type = NumLinearIterations
[]
[average_burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[burnup]
type = ElementAverageValue
block = '3'
variable = burnup
[]
[average_fissionrate]
type = ElementAverageValue
block = '3'
variable = fission_rate
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = '3'
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.05175 #BWR change: length of fuel stack in meters (5*pellet height)
[]
[he_prod]
type = IFBAHeProduction
[]
[null]
type = FunctionValuePostprocessor
function = 0
[]
[]
[Outputs]
time_step_interval = 1
exodus = false
[console]
type = Console
solve_log = true
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'average_burnup burnup he_prod interior_temp plenum_pressure'
[]
[out]
type = CSV
delimiter = ' '
[]
[]
(assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/0pt3MPa/25C_sec/25C_sec_Hardy_Tube_Test_0pt3MPa.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[gen]
type = FuelPinMeshGenerator
include_fuel = false
include_clad = true
pellet_outer_radius = 0.0072527
clad_gap_width = 0.0
clad_top_gap_height = 0.0
clad_bot_gap_height = 0.0
clad_thickness = 0.38e-3
pellet_height = 0.5
pellet_quantity = 1
clad_mesh_density = customize
nx_c = 2
ny_c = 50
elem_type = QUAD8
[]
[]
[Variables]
[temperature]
initial_condition = 600.0
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 40'
y = '1 1'
[]
[temp_function]
type = PiecewiseLinear
y = '600 1600'
[]
[temperature_profile]
type = PiecewiseBilinear
y = '0 40'
x = '0 0.25224 0.50448'
z = '0.995 1.01 0.995 0.995 1.01 0.995'
axis = 1
[]
[inner_temperature]
type = CompositeFunction
functions = 'temp_function temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
factor = 0.0
function = pressure_function
[]
[inner_surface]
boundary = 'clad_inside_right clad_inside_bottom clad_inside_top'
function = pressure_function
[]
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 1001
value = 0.0
[]
[x_fix]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
function = inner_temperature
variable = temperature
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[Materials]
[clad_thermal]
type = ZryThermal
block = clad
zry_thermal_properties_model = MATPRO
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = true
matpro_poissons_ratio = true
temperature = temperature
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = true
model_thermal_creep = true
temperature_loca_creep_begin = 840 # values from the report
temperature_standard_thermal_creep_end = 975
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 600.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-5
nl_abs_tol = 1.0e-8
start_time = 0
n_startup_steps = 1
end_time = 40
dtmax = 1
dtmin = 0.0000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 1.0
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = all_clad_interior
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = total_hoop_strain
[]
[max_disp_x]
type = NodalExtremeValue
block = clad
value_type = max
variable = disp_x
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[csv]
type = CSV
[]
[chkfile]
type = CSV
show = 'max_disp_x max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT6A/MT6A_1-1kW.i)
################################################################################
#
# Description: LOCA MT-6A Test with constant power level of 1.1 kW/m
#
#
# External files:
# axial peaking factor file MT6A_axial_peaking.csv
#
################################################################################
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
group_variables = 'disp_x disp_y'
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 6.1e-4
pellet_mesh_density = customize
ny_p = 100
nx_c = 4
nx_p = 12
pellet_outer_radius = .00413
ny_cu = 3
ny_c = 100
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.66
ny_cl = 3
clad_top_gap_height = 0.18613
clad_gap_width = 7.5e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 253
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[]
[AuxVariables]
[temp_initial]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 7.8e-6 # 2D grain radius
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[hmode]
order = CONSTANT
family = MONOMIAL
[]
[htype]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 150'
y = '1.1e3 1.1e3'
[]
[hmode_function]
type = PiecewiseConstant
x = '0 60 150'
y = '9 10 10'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = MT6A_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '0 150'
y = '1.72 1.72'
scale_factor = 1e6
[]
[temp_func]
type = ParsedFunction
expression = '-24.096*y*y+152.47*y+437.81'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors' # W/m
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz elastic_strain_yy strain_xx strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress' #plastic_strain_xx plastic_strain_yy plastic_strain_zz
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
axial_power_profile = axial_peaking_factors
factor = 0.16e15 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = hmode
boundary = 2
[]
[htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = htype
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = clad
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
block = clad
execute_on = timestep_end
[]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
block = clad
execute_on = timestep_end
[]
[burst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
# TODO: Have StandardLWRFuelRodOutputs create this when the feature in issue #1054 is
# developed.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.66478
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00413 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0293 .9707 0 0 0 0' #TODO: Looks like it's set for 2.93%!
RPF = RPF
density = 10431 #95 %TD Assume TD = 10980 kg/cm3
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e11
normalize_penalty = true
model = frictionless
# model = coulomb
formulation = penalty
# friction_coefficient = 1.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.0 # Pa
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 9.15e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 310 # K
inlet_pressure = 1.72e6 # Pa
# inlet_massflux = massfluxfunc # kg/m^2-sec
rod_diameter = 0.00963 # m
rod_pitch = 1.275e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
heat_transfer_mode = hmode_function
heat_transfer_coefficient = 0.0000001 #W/m^2-K
# heat_transfer_mode = htc_function
htc_correlation_type = 1
flooding_time = 60.0
flooding_rate = 0.059182 # m/s
initial_temperature = 1175 # K
initial_power = 1.628 # kW/m
blockage_ratio = 0.0 #
fuel_stack_length = 3.66 # m
reflooding_model = 1
compute_enthalpy = false
[]
[]
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = temp_initial
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0 #95 %TD Assume TD = 10980 kg/cm3
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
# initial_grain_radius = 6.552e-6 # 2D grain radius 4.2e-6
grain_radius = grain_radius
gbs_model = true
burnup = burnup
# compute_swelling = true
transient_option = MICROCRACKING
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 10431 #95 %TD Assume TD = 10980 kg/cm3
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temp
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_standard_thermal_creep_end = 700.0
temperature_loca_creep_begin = 900.0
max_inelastic_increment = 1e-4
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
temperature = temp
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = temp_initial
eigenstrain_name = clad_thermal_eigenstrain
[]
[phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temp
fraction_beta_phase = fract_beta_phase
outputs = all
output_properties = 'failed burst_stress'
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0.0
end_time = 76.48
dtmax = 5
dtmin = 0.00001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 0.01
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
execute_on = timestep_end
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
fission_rate = fission_rate
variable = temp
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.66 # rod height
execute_on = timestep_end
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_creep_rate]
type = ElementExtremeValue
block = clad
value_type = max
variable = creep_rate_aux
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 40
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/RIA_NSRR_FK/analysis/FK3/FK03_ccm.i)
# This file was created using BIF with the following inputs:
# FK03/FK03.var - md5sum: 63fb064f9380e246b80d3fb7762c0b71
# pulse.tpl - md5sum: 37e5a6b8a0c63ad020906dada3472585
initial_fuel_density = 10020.6066633
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
a_lower = 0.01822
a_upper = 0.12422
temperature = temp
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
elem_type = QUAD8
ny_p = 100
nx_c = 4
ny_c = 100
nx_p = 12
ny_cu = 3
ny_cl = 3
bx_p = 0.75
clad_bot_gap_height = 0.00152
bottom_clad_height = 0.0167
top_clad_height = 0.0167
clad_thickness = 0.00086
pellet_outer_radius = 0.00527
clad_top_gap_height = 0.05265
pellet_height = 0.106
clad_gap_width = 1e-05
pellet_quantity = 1
[]
patch_size = 5
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[BuTC]
[]
[gap]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[buavg]
order = CONSTANT
family = MONOMIAL
[]
[fission_rate]
initial_condition = 0
[]
[grain_radius]
block = 3
initial_condition = 5.96e-6
[]
[integral_burnup]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
block = 3
[]
[gap_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[porosity]
order = CONSTANT
family = MONOMIAL
initial_condition = 0.085711070864
[]
[SED]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_hmode]
order = CONSTANT
family = MONOMIAL
[]
[coolant_channel_htype]
order = CONSTANT
family = MONOMIAL
[]
[critical_heat_flux]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[linear_heat_rate_profile]
type = PiecewiseLinear
data_file = pulse.csv
format = columns
[]
[flux]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 1
[]
[coolant_pressure_ramp]
type = ConstantFunction
value = 101325
[]
[linear_heat_generation_rate]
type = CompositeFunction
functions = 'linear_heat_rate_profile axial_peaking_factors'
[]
[axial_flux]
type = CompositeFunction
functions = 'flux axial_peaking_factors'
[]
[burnup_thermal_conductivity]
type = ConstantFunction
value = 1 # should be burnup / 950
[]
[radial_power_profile]
type = PiecewiseLinear
data_file = RadialPowerProfile.csv
format = columns
axis = X
[]
[radial_burnup_profile]
type = PiecewiseLinear
data_file = RadialBurnupProfile.csv
format = columns
axis = X
[]
[initial_burnup]
type = CompositeFunction
functions = 'burnup_thermal_conductivity radial_burnup_profile'
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = linear_heat_rate_profile
axial_power_profile = axial_peaking_factors
rpf_input = radial_power_profile
num_radial = 80
num_axial = 49
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00527
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.039 0.961 0.0 0.0 0.0 0.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
[fuel]
block = 3
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_eigenstrain
fuel_volumetric_swelling_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz'
decomposition_method = EigenSolution
[]
[clad]
block = 1
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'vonmises_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz creep_strain_xx creep_strain_yy creep_strain_zz'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
fission_rate = fission_rate
variable = temp
block = 3
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[BuTC]
type = FunctionAux
block = 3
variable = BuTC
function = initial_burnup
[]
[pelletid]
type = PelletIdAux
block = 3
variable = pellet_id
number_pellets = 1
execute_on = initial
[]
[gap]
type = SpatialUserObjectAux
block = 3
variable = gap
execute_on = timestep_end
user_object = avg_gap
[]
[buavg]
type = SpatialUserObjectAux
block = 3
variable = buavg
execute_on = timestep_end
user_object = integral_burnup
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
function = axial_flux
block = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 1
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[fuel_porosity]
type = PorosityAuxUO2
block = 3
variable = porosity
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = timestep_begin
[]
[gap_conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductivity
boundary = 10
[]
[SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
block = 1
[]
[coolant_channel_htc]
type = MaterialRealAux
variable = coolant_channel_htc
property = coolant_channel_htc
boundary = 2
[]
[coolant_channel_hmode]
type = MaterialRealAux
variable = coolant_channel_hmode
property = coolant_channel_hmode
boundary = 2
[]
[coolant_channel_htype]
type = MaterialRealAux
variable = coolant_channel_htype
property = coolant_channel_htype
boundary = 2
[]
[critical_heat_flux]
type = MaterialRealAux
variable = critical_heat_flux
property = critical_heat_flux
boundary = 2
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e14
normalize_penalty = true
model = frictionless
friction_coefficient = 2.5
normal_smoothing_distance = 0.1
formulation = penalty
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
roughness_coef = 3.2
roughness_primary = 1.5e-6
roughness_secondary = 1.75e-6
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
initial_moles = initial_moles
gas_released = fission_gas_released
tangential_tolerance = 1.0e-6
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1
function = coolant_pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = '10 5'
initial_pressure = 0.3e6
startup_time = 0
R = 8.314462
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
initial_temperature = 293
[]
[]
[]
[CoolantChannel]
[clad_outer_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 295
inlet_pressure = 0.1E6 # Pa
inlet_massflux = 100.0 # kg/m^2-sec
rod_diameter = 1.10e-2 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
chf_scalef = 5.0
htc_correlation_type = 9
chf_correlation_type = 5
[]
[]
[Materials]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
burnup = burnup
initial_fuel_density = 10020.6066633
total_densification = 0.006
gas_swelling_model_type = SIFGRS
eigenstrain_name = 'fuel_volumetric_swelling_eigenstrain'
[]
[fuel_thermal]
type = UO2Thermal
thermal_conductivity_model = NFIR
block = 3
temperature = temp
burnup = BuTC
initial_porosity = 0.085711070864
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
[]
[fuel_thermal_expansion]
type = UO2ThermalExpansionMartinEigenstrain
block = 3
stress_free_temperature = 293
eigenstrain_name = 'fuel_thermal_eigenstrain'
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = '3'
[]
[clad_thermal]
type = ZryThermal
block = 1
temperature = temp
[]
[clad_inelastic_stress]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models ='plasticity'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = 1
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
cold_work_factor = 0.01
matpro_youngs_modulus = true
matpro_poissons_ratio = true
[]
## TODO: Creep is not active, but is transfered from the SM version.
## Adding creep causes the Peak Hoop strain to best match the FALCON
## results given by R. Montgomery and D. Sunderland. Only retaining
## plasticity matches the results from Wenfeng Liu, John Alvis, Robert Montgomery, and Ken Yueh
[clad_creep_stress]
type = ZryCreepLimbackHoppeUpdate
block = 1
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
initial_fast_fluence = 8.40e25
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 293.0
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[plasticity]
type = ZryPlasticityUpdate
block = 1
initial_fast_fluence = 8.40e25
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
cold_work_factor = .01
plasticity_model_type = MATPRO
output_properties = yield_stress
outputs = all
zircaloy_alloy_type = 4
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = BuTC
transient_option = MICROCRACKING
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[strain_energy_density]
type = StrainEnergyDensity
incremental = true
[]
[]
[UserObjects]
[avg_gap]
type = LayeredAverage
block = 3
variable = penetration
direction = y
num_layers = 48
[]
[pbz]
type = PelletBrittleZone
block = 3
pellet_id = pellet_id
temperature = temp
pellet_radius = 0.00527
number_pellets = 1
execute_on = timestep_begin
[]
[integral_burnup]
type = LayeredAverage
block = 3
variable = burnup
direction = y
num_layers = 1
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_max_its = 40
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 1e-3
nl_abs_tol = 1e-10
dtmin = 0.00001
dtmax = 1.0
start_time = 0
end_time = 100
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.0001
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = linear_heat_rate_profile
max_function_change = 550000
force_step_every_function_point = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[contactslip]
type = ContactSlipDamper
primary = 5
secondary = 8
min_damping_factor = 0.05
[]
[]
[Postprocessors]
[max_hoop_strain]
type = ElementExtremeValue
variable = strain_zz
block = 1
[]
[max_SED]
type = ElementExtremeValue
variable = SED
block = 1
[]
[average_grain_radius]
type = ElementAverageValue
block = 3
outputs = 'exodus'
variable = grain_radius
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
outputs = 'exodus'
execute_on = 'timestep_begin initial'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
outputs = 'exodus'
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = 3
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = linear_heat_rate_profile
scale_factor = 0.106
[]
[average_fission_rate]
type = ElementAverageValue
variable = fission_rate
block = '3'
[]
[RAE]
type = RadialAverageEnthalpy
vector_postprocessor = rad_temp
radial_direction = x
axial_direction = y
axial_position = 0.0503
temperature_name = temp
[]
[peak_RAE]
type = TimeExtremeValue
postprocessor = RAE
[]
[]
[VectorPostprocessors]
[rad_temp]
type = NodalValueSampler
block = 3
sort_by = y
variable = temp
execute_on = timestep_end
outputs = dummy
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
cladding_blocks = 1
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature average_fission_rate fission_gas_released_percentage peak_RAE rod_total_power'
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 25
output_linear = true
[]
[dummy]
type = CSV
enable = false
[]
[]
(test/tests/solid_mechanics/uo2_eigenstrains/uo2_relocation/relo_recov_fuel_rod.i)
#
# Simple fuel rod example for relocation recovery.
#
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.05
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
pellet_mesh_density = customize
ny_p = 1
nx_p = 1
nx_c = 1
ny_cu = 1
ny_c = 1
ny_cl = 1
pellet_quantity = 1
pellet_height = 0.01
pellet_outer_radius = 4.1e-3
clad_gap_width = 160.0e-6
clad_thickness = 0.56e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.0e-2
elem_type = QUAD8
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
patch_size = 20
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[layered_average_contact_pressure]
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_rr]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_rr]
order = CONSTANT
family = MONOMIAL
[]
[stress_rr]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_yy]
order = CONSTANT
family = MONOMIAL
[]
[stress_yy]
order = CONSTANT
family = MONOMIAL
[]
[elastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_strain_zz]
order = CONSTANT
family = MONOMIAL
[]
[stress_zz]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_xx]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[creep_strain_yy]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[creep_strain_zz]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[volumetric_swelling_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1.0e4 6.327640e+07 6.33628e7 6.34492e7 1.0e08'
y = '0 2.5e4 2.5e4 0 2.5e4 2.5e4'
scale_factor = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet
burnup_function = burnup
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
RPF = RPF
fuel_volume_ratio = 1
fuel_pin_geometry = pin_geometry
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[layered_average_contact_pressure]
type = SpatialUserObjectAux
block = pellet
variable = layered_average_contact_pressure
execute_on = nonlinear
user_object = layered_average_contact_pressure
[]
[gas_swell]
type = MaterialRealAux
block = pellet
variable = gas_swell
property = gas_swelling
execute_on = nonlinear
[]
[volumetric_strain]
type = RankTwoScalarAux
block = pellet
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = nonlinear
[]
[elastic_strain_rr]
type = RankTwoAux
variable = elastic_strain_rr
rank_two_tensor = elastic_strain
index_i = 0
index_j = 0
execute_on = nonlinear
[]
[total_strain_rr]
type = RankTwoAux
variable = total_strain_rr
rank_two_tensor = total_strain
index_i = 0
index_j = 0
execute_on = nonlinear
[]
[stress_rr]
type = RankTwoAux
variable = stress_rr
rank_two_tensor = stress
index_i = 0
index_j = 0
execute_on = nonlinear
[]
[elastic_strain_yy]
type = RankTwoAux
variable = elastic_strain_yy
rank_two_tensor = elastic_strain
index_i = 2
index_j = 2
execute_on = nonlinear
[]
[total_strain_yy]
type = RankTwoAux
variable = total_strain_yy
rank_two_tensor = total_strain
index_i = 2
index_j = 2
execute_on = nonlinear
[]
[stress_yy]
type = RankTwoAux
variable = stress_yy
rank_two_tensor = stress
index_i = 2
index_j = 2
execute_on = nonlinear
[]
[elastic_strain_zz]
type = RankTwoAux
variable = elastic_strain_zz
rank_two_tensor = elastic_strain
index_i = 1
index_j = 1
execute_on = nonlinear
[]
[total_strain_zz]
type = RankTwoAux
variable = total_strain_zz
rank_two_tensor = total_strain
index_i = 1
index_j = 1
execute_on = nonlinear
[]
[stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_i = 1
index_j = 1
execute_on = nonlinear
[]
[volumetric_swelling_strain]
type = MaterialRealAux
variable = volumetric_swelling_strain
property = volumetric_swelling_strain
block = pellet
execute_on = nonlinear
[]
[creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
block = clad
execute_on = nonlinear
[]
[creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
block = clad
execute_on = nonlinear
[]
[creep_strain_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
block = clad
execute_on = nonlinear
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.5e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.5e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 15.5e6
inlet_massflux = 3800
rod_diameter = 0.948e-2
rod_pitch = 1.26e-2
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[elastic_stress]
type = ComputeSmearedCrackingStress
block = pellet
cracking_stress = 1.68e8
inelastic_models = 'fuel_creep'
softening_models = exponential_softening
shear_retention_factor = 0.1
max_stress_correction = 0
cracked_elasticity_type = DIAGONAL
output_properties = crack_damage
outputs = exodus
[]
[exponential_softening]
type = ExponentialSoftening
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet
temperature = temp
fission_rate = fission_rate
initial_grain_radius = 10e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 1e12
relocation_activation1 = 5000
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
model_relocation_recovery = true
max_relocation_recovery_fraction = 0.5
relocation_scaling_factor = 1
volumetric_swelling_increment = vol_swell_increment
layered_average_contact_pressure = layered_average_contact_pressure
outputs = all
output_properties = 'relocation_strain recovered_relocation_strain'
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup_function = burnup
initial_fuel_density = ${initial_fuel_density}
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
zircaloy_material_type = stress_relief_annealed
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[]
[]
[UserObjects]
[layered_average_contact_pressure]
type = LayeredSideAverage
variable = contact_pressure
direction = y
num_layers = 1
execute_on = timestep_end
boundary = 10
[]
# [avg_gap]
# type = LayeredAverage
# block = pellet
# variable= penetration
# direction = y
# num_layers = 1
# execute_on = timestep_end
# []
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
verbose = false
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 1.0e8
dtmax = 2e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
time_t = '0 1.0e4 6.327640e+07 6.33628e7 6.34492e7 1.0e08'
time_dt = '2e2 1e3 1e3 1e3 1e3 1e3'
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
burnup_function = burnup
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.1186 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
[]
[reloc_strain]
type = ElementAverageValue
variable = relocation_strain
block = pellet
execute_on = timestep_end
[]
[contact_pressure]
type = ElementAverageValue
variable = contact_pressure
block = pellet
execute_on = nonlinear
[]
[average_contact_pressure]
type = ElementAverageValue
variable = layered_average_contact_pressure
block = pellet
execute_on = timestep_end
[]
[clad_crp_zz]
type = SideAverageValue
boundary = 5
variable = creep_strain_zz
execute_on = timestep_end
[]
[clad_crp_xx]
type = SideAverageValue
boundary = 5
variable = creep_strain_xx
execute_on = timestep_end
[]
[clad_creep_increment]
type = SideAverageIncrementTensorComponent
boundary = 5
variable = creep_strain_zz
execute_on = timestep_end
[]
[ave_burnup]
type = ElementAverageValue
variable = burnup
block = pellet
execute_on = timestep_end
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
execute_on = timestep_end
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
execute_on = timestep_end
[]
[elastic_strain_rr]
type = ElementAverageValue
variable = elastic_strain_rr
block = pellet
execute_on = nonlinear
[]
[total_strain_rr]
type = ElementAverageValue
variable = total_strain_rr
block = pellet
execute_on = nonlinear
[]
[stress_rr]
type = ElementAverageValue
variable = stress_rr
block = pellet
execute_on = timestep_end
[]
[elastic_strain_yy]
type = ElementAverageValue
variable = elastic_strain_yy
block = pellet
execute_on = nonlinear
[]
[total_strain_yy]
type = ElementAverageValue
variable = total_strain_yy
block = pellet
execute_on = nonlinear
[]
[stress_yy]
type = ElementAverageValue
variable = stress_yy
block = pellet
execute_on = timestep_end
[]
[elastic_strain_zz]
type = ElementAverageValue
variable = elastic_strain_zz
block = pellet
execute_on = nonlinear
[]
[total_strain_zz]
type = ElementAverageValue
variable = total_strain_zz
block = pellet
execute_on = timestep_end
[]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
block = pellet
execute_on = timestep_end
[]
[thermal_strain_rr]
type = DifferencePostprocessor
value1 = total_strain_rr
value2 = elastic_strain_rr
execute_on = timestep_end
[]
[thermal_strain_yy]
type = DifferencePostprocessor
value1 = total_strain_yy
value2 = elastic_strain_yy
execute_on = timestep_end
[]
[thermal_strain_zz]
type = DifferencePostprocessor
value1 = total_strain_zz
value2 = elastic_strain_zz
execute_on = timestep_end
[]
[vol_swell_increment]
type = SideAverageIncrementTensorComponent
boundary = 10
variable = volumetric_swelling_strain
execute_on = nonlinear
[]
[recov_strain]
type = ElementAverageValue
variable = recovered_relocation_strain
block = pellet
execute_on = timestep_end
[]
[]
# [VectorPostprocessors]
# [clad]
# type = NodalValueSampler
# variable = disp_x
# boundary = 2
# sort_by = y
# outputs = 'outfile_clad_radial_displacement'
# []
# [pellet]
# type = NodalValueSampler
# variable = disp_x
# boundary = 10
# sort_by = y
# outputs = 'outfile_fuel_radial_displacement'
# []
# []
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
show = 'reloc_strain recov_strain'
execute_on = 'FINAL'
[]
# [outfile_clad_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
# [outfile_fuel_radial_displacement]
# type = CSV
# execute_on = 'FINAL'
# []
[]
(test/tests/fuel_pin_mesh_generator/discrete_drilled.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
nx_chamfer = 1
nx_flat = 3
nx_dish = '3 5 3'
chamfer_width = 5e-4
chamfer_height = 1.6e-4
dish_depth = 3e-4
dish_radius = .002
pellet_mesh_density = customize
pellet_quantity = '1 1 1'
pellet_inner_radius = '.001 0 .001'
use_legacy_block_ids = false
fuel_base_name = fuel
ny_p = '15 15 15'
nx_c = 1
ny_cu = 1
ny_cl = 1
clad_mesh_density = customize
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[pellet_centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/Tribulation/analysis/BN1X3/BN1X3.i)
initial_fuel_density = 10408
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
initial_porosity = 0.05345
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 1.0019
pellet_outer_radius = 0.00402
pellet_mesh_density = customize
nx_p = 11
ny_p = 243
clad_bot_gap_height = 0.001
clad_gap_width = 100.0e-6
clad_thickness = 0.00063
clad_mesh_density = customize
nx_c = 4
ny_c = 249
bottom_clad_height = 0.00224
top_clad_height = 0.00224
clad_top_gap_height = 0.0883
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = 3
initial_condition = 8.58e-6 # 2D grain radius 11e-6/2*1.56
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseBilinear
data_file = BN1X3_power.csv
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 34462368 34548768 34635168 35176032 35262432 35348832 90228384 90314784'
y = '0.0073804 1 1 0.0073804 1.01974 1.01974 0.0073804 1 1 0.0073804'
[]
[flux]
type = PiecewiseBilinear
data_file = BN1X3_fast_flux.csv
axis = 1
[]
[clad_temp_bc]
type = PiecewiseBilinear
data_file = BN1X3_clad_temp.csv
axis = 1
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1
[]
[timestep_function]
type = PiecewiseLinear
data_file = BN1X3_time_function.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain
fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx
strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = 3
burnup_function = burnup
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
function = flux
factor = 1
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0825 0.9175 0 0 0 0'
RPF = RPF
fuel_pin_geometry = pin_geometry
fuel_volume_ratio = 1.0
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 0.3e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 1020
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 13.729e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.96133e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
relocation_activation1 = 5000
burnup_relocation_stop = 0.0205
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
fuel_pin_geometry = pin_geometry
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10393
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING
[]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 90314784
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 20
iteration_window = 2
linear_iteration_ratio = 100
timestep_limiting_function = timestep_function
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
burnup_function = burnup
variable = temp
[]
[fuel_max_temp]
type = ElementExtremeValue
block = 3
variable = temp
[]
[fuel_average_temp]
type = ElementAverageValue
block = 3
variable = temp
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
csv = true
exodus = true
color = false
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released_percentage fuel_average_temp'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
(assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/2pt1MPa/25C_sec/25C_sec_Hardy_Tube_Test_2pt1MPa.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[gen]
type = FuelPinMeshGenerator
include_fuel = false
include_clad = true
pellet_outer_radius = 0.0072527
clad_gap_width = 0.0
clad_top_gap_height = 0.0
clad_bot_gap_height = 0.0
clad_thickness = 0.38e-3
pellet_height = 0.5
pellet_quantity = 1
clad_mesh_density = customize
nx_c = 2
ny_c = 50
elem_type = QUAD8
[]
[]
[Variables]
[temperature]
initial_condition = 600.0
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 40'
y = '1 1'
[]
[temp_function]
type = PiecewiseLinear
y = '600 1600'
[]
[temperature_profile]
type = PiecewiseBilinear
y = '0 40'
x = '0 0.25224 0.50448'
z = '0.995 1.01 0.995 0.995 1.01 0.995'
axis = 1
[]
[inner_temperature]
type = CompositeFunction
functions = 'temp_function temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
factor = 0.0
function = pressure_function
[]
[inner_surface]
boundary = 'clad_inside_right clad_inside_bottom clad_inside_top'
function = pressure_function
[]
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 1001
value = 0.0
[]
[x_fix]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
function = inner_temperature
variable = temperature
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[Materials]
[clad_thermal]
type = ZryThermal
block = clad
zry_thermal_properties_model = MATPRO
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = true
matpro_poissons_ratio = true
temperature = temperature
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = true
model_thermal_creep = true
temperature_loca_creep_begin = 840 # values from the report
temperature_standard_thermal_creep_end = 975
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 600.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-5
nl_abs_tol = 1.0e-8
start_time = 0
n_startup_steps = 1
end_time = 40
dtmax = 1
dtmin = 0.0000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 1.0
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = all_clad_interior
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = total_hoop_strain
[]
[max_disp_x]
type = NodalExtremeValue
block = clad
value_type = max
variable = disp_x
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[csv]
type = CSV
[]
[chkfile]
type = CSV
show = 'max_disp_x max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = false
[]
[]
(assessment/MOX/JOYO/MK-I/analysis/MK-I_75MW_master_old_bubble_gb_lim.i)
initial_fuel_density = 10836.8
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.065
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.6
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000100
clad_thickness = 0.00035
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.599
elem_type = QUAD8
nx_c = 4
ny_c = 200
nx_p = 20
ny_p = 200
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = '0 70000 25000000'
y = '0 38974.7 38974.7'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 70000 25000000'
y = '0 1.9e+19 1.9e+19'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0 0.071 0.146 0.221 0.296 0.37 0.443 0.566'
y = '0 25000000'
z = '0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672 0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = '0 70000 25000000'
y = '0 32000 32000'
[]
[clad_surface_temp]
type = PiecewiseBilinear
x = '0 0.071 0.146 0.221 0.296 0.37 0.443 0.566'
y = '0 25000000'
z = '295 295 295 295 295 295 295 295 593.58 606.36 619.13 630.26 640.87 651.76 662.67 673.67'
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.065
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp_clad_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_surface_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 101325
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 300000
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10836.8
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
diff_coeff_option = TURNBULL_D1_4D2_4D3
fission_rate = fission_rate
grain_radius_const = 8.01e-6 #I'm keeping the grain radius const because the grain growth in MOX is probably different due to high Temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-5
fixed_point_rel_tol = 1e-5
fixed_point_max_its = 1
l_max_its = 70
l_tol = 8e-3
nl_max_its = 70
nl_rel_tol = 1e-5
nl_abs_tol = 1e-5
start_time = 0
n_startup_steps = 1
end_time = 25000000
dtmax = 1e6
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 5000
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.6 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = MK-I_75MW_sub_old_bubble_gb_lim.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'temp disp_x disp_y'
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BFJ027/BFJ027.i)
################################################################################
#
# Description: Calvert Cliffs BFJ027
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BFJ027_power.csv
# axial peaking factor file BFJ027_axial_peaking.csv
# flux boundary condition file BFJ027_fast_flux.csv
#
################################################################################
initial_fuel_density = 10411.07
[GlobalParams]
density = ${initial_fuel_density} #94.882 %TD Assume TD = 10972.65 kg/cm3
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.28943
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BFJ027_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BFJ027_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 177688931 177689291'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 177688931 177689291'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BFJ027_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = 1
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155 # m
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0366 .9634 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 177689291
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_D/x441_leg_D.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_swelling'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = MaterialRealAux
variable = porosity
property = porosity
block = pellet
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrain
block = pellet
temperature = temp
# hydrostatic_stress = hydrostatic_stress
hydrostatic_stress = 1e6
eigenstrain_name = fuel_volumetric_swelling
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_legacy_swell
[out2]
type = CSV
file_base = x441_${group_name}_legacy_swell_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_legacy_swell_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_legacy_swell_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/standard_metallic_outputs_action/x441_mini_fuel_rod_no_std_blk.i)
initial_fuel_density = 15800
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
# Nominal Design Geometric Parameters (X441)
type = FuelPinMeshGenerator
clad_thickness = 0.38e-03
pellet_outer_radius = 2.195e-03
pellet_height = 3.4e-2
clad_top_gap_height = 2.7e-2
clad_gap_width = 0.345e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_bot_gap_height = 0.31e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 1
ny_p = 5
nx_c = 1
ny_c = 5
ny_cu = 1
ny_cl = 1
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 2
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 5e3'
y = '0 44722'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 5e3'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 5e3'
y = '298.0 648.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 343.0e-3
pellet_y_start = 8.1e-3
[]
[engr_radial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_rad / 2.195e-03'
symbol_values = 'max_fuel_radial_disp'
symbol_names = 'fuel_disp_rad'
[]
[engr_axial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_axial / 343.0e-3'
symbol_values = 'max_fuel_elongation'
symbol_names = 'fuel_disp_axial'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain
solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = 0.345e-3
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
temperature = plenum_temperature
volume = plenum_volume
output = plenum_pressure
material_input = fission_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = 2.195e-03
X_Zr = 0.225
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = 0.225
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = 0.225
X_Pu = 0.0
block = pellet
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
interconnection_initiating_porosity = 0.23
interconnection_terminating_porosity = 0.25
anisotropic_factor = 0.4
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = 0.225
X_Pu = 0.0
spheat_model = savage
thcond_model = lanl
porosity = porosity
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
critical_porosity = 0.24
fractional_fgr_initial = 0.8
fractional_fgr_post = 1.0
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 5e3
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e3
time_t = '0 1e4'
time_dt = '1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[plenum_temperature]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[plenum_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = -1.53703e-6
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fission_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fission_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[fission_gas_released_percentage]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fission_gas_produced
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_clad_creep_strain_mag]
type = ElementExtremeValue
value_type = max
block = clad
variable = effective_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_radial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_xx
[]
[max_fuel_axial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_yy
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_fuel_radial_disp]
type = NodalExtremeValue
variable = disp_x
boundary = 'all_pellet_exterior'
[]
[engr_strain_fuel_radial]
type = FunctionValuePostprocessor
function = engr_radial_strain_fuel
[]
[engr_strain_fuel_axial]
type = FunctionValuePostprocessor
function = engr_axial_strain_fuel
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.05 0.0'
num_points = 300
sort_by = y
outputs = 'vec1'
[]
[clad_radial_displacement]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec2'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
time_step_interval = 1
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3'
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_mini_fuel_rod_no_std_blk_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fission_gas_released_percentage max_clad_hoop_creep max_clad_creep_strain_mag max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[vec1]
type = CSV
file_base = x441_mini_fuel_rod_no_std_blk_vec1
execute_on = 'FINAL'
create_final_symlink = true
[]
[vec2]
type = CSV
file_base = x441_mini_fuel_rod_no_std_blk
execute_on = 'FINAL'
create_final_symlink = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT6A/MT6A_1-2kW.i)
################################################################################
#
# Description: LOCA MT-6A Test with constant power level of 1.2 kW/m
#
#
# External files:
# axial peaking factor file MT6A_axial_peaking.csv
#
################################################################################
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
group_variables = 'disp_x disp_y'
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 6.1e-4
pellet_mesh_density = customize
ny_p = 100
nx_c = 4
nx_p = 12
pellet_outer_radius = .00413
ny_cu = 3
ny_c = 100
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.66
ny_cl = 3
clad_top_gap_height = 0.18613
clad_gap_width = 7.5e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 253
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[]
[AuxVariables]
[temp_initial]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 7.8e-6 # 2D grain radius
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[hmode]
order = CONSTANT
family = MONOMIAL
[]
[htype]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 150'
y = '1.2e3 1.2e3'
[]
[hmode_function]
type = PiecewiseConstant
x = '0 60 150'
y = '9 10 10'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = MT6A_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '0 150'
y = '1.72 1.72'
scale_factor = 1e6
[]
[temp_func]
type = ParsedFunction
expression = '-24.096*y*y+152.47*y+437.81'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors' # W/m
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz elastic_strain_yy strain_xx strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress' #plastic_strain_xx plastic_strain_yy plastic_strain_zz
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
axial_power_profile = axial_peaking_factors
factor = 0.16e15 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = hmode
boundary = 2
[]
[htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = htype
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = clad
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
block = clad
execute_on = timestep_end
[]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
block = clad
execute_on = timestep_end
[]
[burst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
# TODO: Have StandardLWRFuelRodOutputs create this when the feature in issue #1054 is
# developed.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.66478
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00413 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0293 .9707 0 0 0 0' #TODO: Looks like it's set for 2.93%!
RPF = RPF
density = 10431 #95 %TD Assume TD = 10980 kg/cm3
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e11
normalize_penalty = true
model = frictionless
# model = coulomb
formulation = penalty
# friction_coefficient = 1.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.0 # Pa
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 9.15e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 310 # K
inlet_pressure = 1.72e6 # Pa
# inlet_massflux = massfluxfunc # kg/m^2-sec
rod_diameter = 0.00963 # m
rod_pitch = 1.275e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
heat_transfer_mode = hmode_function
heat_transfer_coefficient = 0.0000001 #W/m^2-K
# heat_transfer_mode = htc_function
htc_correlation_type = 1
flooding_time = 60.0
flooding_rate = 0.059182 # m/s
initial_temperature = 1175 # K
initial_power = 1.776 # kW/m
blockage_ratio = 0.0 #
fuel_stack_length = 3.66 # m
reflooding_model = 1
compute_enthalpy = false
[]
[]
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = temp_initial
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0 #95 %TD Assume TD = 10980 kg/cm3
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
# initial_grain_radius = 6.552e-6 # 2D grain radius 4.2e-6
grain_radius = grain_radius
gbs_model = true
burnup = burnup
# compute_swelling = true
transient_option = MICROCRACKING
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 10431 #95 %TD Assume TD = 10980 kg/cm3
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temp
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_standard_thermal_creep_end = 700.0
temperature_loca_creep_begin = 900.0
max_inelastic_increment = 1e-4
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
temperature = temp
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = temp_initial
eigenstrain_name = clad_thermal_eigenstrain
[]
[phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temp
fraction_beta_phase = fract_beta_phase
outputs = all
output_properties = 'failed burst_stress'
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0.0
end_time = 63.02
dtmax = 5
dtmin = 0.00001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 0.01
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
execute_on = timestep_end
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
fission_rate = fission_rate
variable = temp
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.66 # rod height
execute_on = timestep_end
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_creep_rate]
type = ElementExtremeValue
block = clad
value_type = max
variable = creep_rate_aux
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 40
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/MOX/FFTF/FO-2/L09/analysis/L09_2DRZ_new_bubble_gb_lim_grainGrowth.i)
initial_fuel_density = 10431.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.2
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.9144
pellet_outer_radius = 2.794e-3
pellet_inner_radius = 6.985e-4
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 101.6e-6
clad_thickness = 0.5334e-3
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 1.057
elem_type = QUAD8
nx_c = 4
ny_c = 1000
nx_p = 10
ny_p = 500
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
scaling = 1
[]
[]
[AuxVariables]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[grain_radius]
block = pellet
initial_condition = 10e-6
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[fraction_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 0.854004932 0.854004932'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 2.99513e+19 2.99513e+19'
[]
[axial_power_profile]
type = PiecewiseBilinear
x = '0.0334152 0.09468 0.1559448 0.2162952 0.27756 0.3388248 0.3991752 0.46044 0.5217048 0.5820552 0.64332 0.7045848 0.7649352 0.8262 0.8874648'
y = '0 31858942.74'
z = '5493.43832 7183.727034 29157.48031 34228.34646 37608.92388 40144.35696 41412.07349 42257.21785 41834.64567 39721.78478 37608.92388 33805.77428 28312.33596 4225.721785 2535.433071 5041.338583 6592.519685 26757.87402 31411.41732 34513.77953 36840.55118 38003.93701 38779.52756 38391.73228 36452.75591 34513.77953 31023.62205 25982.28346 3877.952756 2326.771654'
scale_factor = 1
axis = 1
[]
[average_power_history]
type = PiecewiseLinear
x = '0 74993.42422 31858942.74'
y = '0 24264.05646 24264.05646'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
use_finite_deform_jacobian = true
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
extra_vector_tags = 'ref'
block = pellet
fission_rate = fission_rate
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.2
axial_power_profile = axial_power_profile
rod_ave_lin_pow = fraction_history
pellet_diameter = 0.005588
execute_on = timestep_begin
pellet_inner_diameter = 0.001397
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 0.151e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 101325
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = 580
inlet_pressure = 0.151e6
inlet_massflux = 1687.43
rod_diameter = 6.858e-3
rod_pitch = 1.7e-2
linear_heat_rate = fraction_history
axial_power_profile = axial_power_profile
coolant_material = sodium
[]
[]
[Materials]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = 0.2
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
outputs = exodus
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 2.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
bubble_gb_limit = 1.0e+11
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fast_neutron_flux]
type = GenericFunctionMaterial
block = clad
prop_names = fast_neutron_flux
prop_values = fast_neutron_flux_function
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -200
n_startup_steps = 1
end_time = 31858942.74
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 10
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = fraction_history
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.9144 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
file_base = fftf_fo2_L09_new_GrainGrowth_chkfile
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(assessment/MOX/JOYO/MK-I/analysis/MK-I_50MW_master_old_bubble_gb_lim.i)
initial_fuel_density = 10836.8
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.065
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.6
pellet_outer_radius = 0.0027
pellet_mesh_density = customize
clad_mesh_density = customize
clad_gap_width = 0.000100
clad_thickness = 0.00035
clad_bot_gap_height = 1.0e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_top_gap_height = 0.599
elem_type = QUAD8
nx_c = 4
ny_c = 200
nx_p = 20
ny_p = 200
ny_cu = 3
ny_cl = 3
[]
patch_size = 50
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[pore]
[]
[fission_rate]
block = pellet
[]
[burnup]
block = pellet
[]
[gas_gen_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_grn_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_bdr_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[gas_rel_3]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bdr_2]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[atm_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vcn_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prs_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[prseq_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[vol_bbl_bdr]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[eff_diff_coeff]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[radial_strain]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history] #related to the LHGR at the midplane
type = PiecewiseLinear
x = '0 70000 17153028'
y = '0 25577 25577'
[]
[fast_neutron_flux_function]
type = PiecewiseLinear
x = '0 70000 17153028'
y = '0 1.2e+19 1.2e+19'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
x = '0 0.071 0.146 0.221 0.296 0.37 0.443 0.566'
y = '0 17153028'
z = '0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672 0.889 1.041 1.152 1.173 1.129 0.971 0.782 0.672'
scale_factor = 1
axis = 1
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
[]
[average_power_history]
type = PiecewiseLinear
x = '0 70000 17153028'
y = '0 21000 21000'
[]
[clad_surface_temp]
type = PiecewiseBilinear
x = '0 0.075 0.15 0.225 0.3 0.375 0.45 0.525 0.6'
y = '0 17153028'
z = '295 295 295 295 295 295 295 295 295 499.9 509.1 517.8 525.42 532.71 540.29 547.7 552.3 554.81'
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '0 1'
y = '1 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
add_variables = true
strain = FINITE
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[clad]
block = clad
add_variables = true
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz'
use_finite_deform_jacobian = true
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fission_rate]
type = FissionRateGeneral
fission_rate_formulation = MOX
variable = fission_rate
block = pellet
initial_porosity = 0.065
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
pellet_diameter = 0.0054
execute_on = timestep_begin
porosity = pore
[]
[burnup]
type = BurnupAux
block = pellet
fission_rate = fission_rate
variable = burnup
execute_on = timestep_begin
[]
[fggen]
type = MaterialRealAux
variable = gas_gen_3
property = gas_concentration_generated_total
execute_on = timestep_end
[]
[fggrn]
type = MaterialRealAux
variable = gas_grn_3
property = gas_concentration_intra_total
execute_on = timestep_end
[]
[fgbdr]
type = MaterialRealAux
variable = gas_bdr_3
property = gas_concentration_GB_bubble_volume
execute_on = timestep_end
[]
[fgrel]
type = MaterialRealAux
variable = gas_rel_3
property = gas_concentration_release_total
execute_on = timestep_end
[]
[nbbl2]
type = MaterialRealAux
variable = bbl_bdr_2
property = bubble_GB_surface_density
execute_on = timestep_end
[]
[nvcn2]
type = MaterialRealAux
variable = vcn_bdr_2
property = vacancy_concentration_GB_surface
execute_on = timestep_end
[]
[atmbbl]
type = MaterialRealAux
variable = atm_bbl_bdr
property = atom_per_bubble_GB
execute_on = timestep_end
[]
[vcnbbl]
type = MaterialRealAux
variable = vcn_bbl_bdr
property = vacancy_per_bubble_GB
execute_on = timestep_end
[]
[prsbbl]
type = MaterialRealAux
variable = prs_bbl_bdr
property = bubble_GB_pressure
execute_on = timestep_end
[]
[prseqbbl]
type = MaterialRealAux
variable = prseq_bbl_bdr
property = bubble_GB_pressure_equilibrium
execute_on = timestep_end
[]
[radbbl]
type = MaterialRealAux
variable = rad_bbl_bdr
property = bubble_radius_GB
execute_on = timestep_end
[]
[volbbl]
type = MaterialRealAux
variable = vol_bbl_bdr
property = bubble_GB_volume
execute_on = timestep_end
[]
[frcvrg]
type = MaterialRealAux
variable = GBCoverage
property = GBCoverage
execute_on = timestep_end
[]
[diffc]
type = MaterialRealAux
variable = eff_diff_coeff
property = eff_diff_coeff
execute_on = timestep_end
[]
[dvv0bd]
type = MaterialRealAux
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
execute_on = timestep_end
[]
[radial_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = radial_strain
index_i = 0
index_j = 0
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
execute_on = 'linear'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = kinematic
model = frictionless
penalty = 1e7
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
contact_pressure = contact_pressure
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = '12'
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[temp_clad_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = clad_surface_temp
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 101325
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 300000
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = ave_temp_interior
volume = gas_volume
material_input = fis_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
flux_function = fast_neutron_flux_function
[]
[fuel_thermal]
type = MAMOXThermal
block = pellet
temperature = temp
Am_content = 0.0
Np_content = 0.0
porosity = pore
output_properties = 'thermal_conductivity'
[]
[fuel_elasticity_tensor]
type = MAMOXElasticityTensor
block = pellet
[]
[elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = MAMOXThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
oxygen_to_metal_ratio = 1.98
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10836.8
eigenstrain_name = fuel_volumetric_strain
[]
[clad_thermal]
type = SS316Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 8000
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
block = clad
temperature = temp
elastic_constants_model = legacy_ifr
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_ss316creep'
block = clad
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup = burnup
diff_coeff_option = TURNBULL_D1_4D2_4D3
fission_rate = fission_rate
grain_radius_const = 8.01e-6 #I'm keeping the grain radius const because the grain growth in MOX is probably different due to high Temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
fixed_point_abs_tol = 1e-5
fixed_point_rel_tol = 1e-5
fixed_point_max_its = 1
l_max_its = 70
l_tol = 8e-3
nl_max_its = 70
nl_rel_tol = 1e-5
nl_abs_tol = 1e-5
start_time = 0
n_startup_steps = 1
end_time = 17153028
dtmax = 1e6
dtmin = 0.25
[TimeStepper]
type = IterationAdaptiveDT
dt = 5000
optimal_iterations = 15
iteration_window = 2
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
execute_on = 'initial timestep_end'
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralFisGasGeneratedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_released_percentage]
type = FGRPercent
fission_gas_generated = fis_gas_produced
fission_gas_released = fis_gas_released
execute_on = 'linear'
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
execute_on = 'linear'
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
execute_on = 'linear'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
fission_rate = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = average_power_history
scale_factor = 0.6 # rod height
[]
[average_vonMises_fuel]
type = ElementAverageValue
variable = vonmises_stress
block = pellet
[]
[average_vonMises_clad]
type = ElementAverageValue
variable = vonmises_stress
block = clad
[]
[average_strain_rr_fuel]
type = ElementAverageValue
variable = radial_strain
block = pellet
[]
[average_strain_rr_clad]
type = ElementAverageValue
variable = radial_strain
block = clad
[]
[average_creep_strain_clad]
type = ElementAverageValue
variable = effective_creep_strain
block = clad
[]
[ave_pore]
type = ElementAverageValue
variable = pore
[]
[max_pore]
type = NodalExtremeValue
value_type = max
variable = pore
[]
[min_pore]
type = NodalExtremeValue
value_type = min
variable = pore
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = true
csv = true
[console]
type = Console
max_rows = 25
[]
[chkfile]
type = CSV
execute_on = FINAL
show = 'ave_temp_interior fis_gas_released_percentage max_pore'
[]
[]
[MultiApps]
[sub]
type = TransientMultiApp
app_type = BisonApp
execute_on = timestep_end
catch_up = true
max_catch_up_steps = 10
positions_file = positions.txt
input_files = MK-I_50MW_sub_old_bubble_gb_lim.i
[]
[]
[Transfers]
[temp_to_sub]
type = MultiAppProjectionTransfer
to_multi_app = sub
source_variable = temp
variable = temp
[]
[pore_from_sub]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = sub
source_variable = pore
variable = pore
[]
[]
[Debug]
show_var_residual_norms = true
show_var_residual = 'temp disp_x disp_y'
[]
(assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-1kW.i)
################################################################################
#
# Description: LOCA MT-4 Test with constant power level of 1.1 kW/m
#
#
# External files:
# axial peaking factor file MT4_axial_peaking.csv
#
################################################################################
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
displacements = 'disp_x disp_y'
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
group_variables = 'disp_x disp_y'
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 6.1e-4
pellet_mesh_density = customize
ny_p = 100
nx_c = 4
nx_p = 12
pellet_outer_radius = .00413
ny_cu = 3
ny_c = 100
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.66
ny_cl = 3
clad_top_gap_height = 0.18613
clad_gap_width = 7.5e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[DefaultElementQuality]
aspect_ratio_upper_bound = 253
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[]
[AuxVariables]
[temp_initial]
[InitialCondition]
type = FunctionIC
function = temp_func
[]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 7.8e-6 # 2D grain radius
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[hmode]
order = CONSTANT
family = MONOMIAL
[]
[htype]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 110'
y = '1.1e3 1.1e3'
[]
[hmode_function]
type = PiecewiseConstant
x = '0 57 110'
y = '9 10 10'
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = MT4_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp] # reads and interpolates input data defining amplitude curve for coolant and fill gas pressure
type = PiecewiseLinear
x = '0 110'
y = '0.28 0.28'
scale_factor = 1e6
[]
[temp_func]
type = ParsedFunction
expression = '-24.096*y*y+152.47*y+437.81'
[]
[q]
type = CompositeFunction
functions = 'power_history axial_peaking_factors' # W/m
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
incremental = true
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz elastic_strain_yy strain_xx strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
strain = FINITE
incremental = true
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz
creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress' #plastic_strain_xx plastic_strain_yy plastic_strain_zz
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
axial_power_profile = axial_peaking_factors
factor = 0.16e15 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
[]
[hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = hmode
boundary = 2
[]
[htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = htype
boundary = 2
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = clad
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
block = clad
execute_on = timestep_end
[]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
block = clad
execute_on = timestep_end
[]
[burst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
# TODO: Have StandardLWRFuelRodOutputs create this when the feature in issue #1054 is
# developed.
# We are using 'plenum_temp' rather than 'plenum_temperature', which is generated
# automatically by StandardLWRFuelRodOutputs, but computed in a different way.
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temp
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.66478
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00413 # m
fuel_volume_ratio = 1.0
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0293 .9707 0 0 0 0'
RPF = RPF
density = 10431.0 #95 %TD Assume TD = 10980 kg/cm3
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
normalize_penalty = true
model = frictionless
# model = coulomb
formulation = penalty
# friction_coefficient = 1.0
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 1.0 # Pa
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9 # clad interior + fuel exterior
initial_pressure = 9.3e6 # Pa
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = '1 2 3'
variable = temp
inlet_temperature = 311 # K
inlet_pressure = 0.28e6 # Pa
# inlet_massflux = massfluxfunc # kg/m^2-sec
rod_diameter = 0.00963 # m
rod_pitch = 1.275e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
heat_transfer_mode = hmode_function
heat_transfer_coefficient = 0.0000001 #W/m^2-K
# heat_transfer_mode = 10
htc_correlation_type = 1
flooding_time = 57.0
flooding_rate = 0.127 # m/s
initial_temperature = 1140 # K
initial_power = 1.628 # kW/m
blockage_ratio = 0.0 #
fuel_stack_length = 3.66 # m
reflooding_model = 1
compute_enthalpy = false
[]
[]
[Materials]
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = temp_initial
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet
temperature = temp
burnup = burnup
initial_fuel_density = 10431.0 #95 %TD Assume TD = 10980 kg/cm3
eigenstrain_name = fuel_volumetric_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
fission_rate = fission_rate # coupling to fission_rate aux variable
# initial_grain_radius = 6.552e-6 # 2D grain radius 4.2e-6
grain_radius = grain_radius
gbs_model = true
burnup = burnup
# compute_swelling = true
transient_option = MICROCRACKING
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 10431 #95 %TD Assume TD = 10980 kg/cm3
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temp
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_standard_thermal_creep_end = 700.0
temperature_loca_creep_begin = 900.0
max_inelastic_increment = 1e-4
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
temperature = temp
thermal_expansion_coeff = 5.0e-6
stress_free_temperature = temp_initial
eigenstrain_name = clad_thermal_eigenstrain
[]
[phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temp
fraction_beta_phase = fract_beta_phase
outputs = all
output_properties = 'failed burst_stress'
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
# controls for linear iterations
l_max_its = 100
l_tol = 8e-3
# controls for nonlinear iterations
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
# time control
start_time = 0.0
end_time = 110
dtmax = 5
dtmin = 0.00001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 0.01
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[fis_gas_released]
type = ElementIntegralFisGasReleasedSifgrs
block = pellet
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
execute_on = linear
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = timestep_end
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
execute_on = timestep_end
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
fission_rate = fission_rate
variable = temp
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 3.66 # rod height
execute_on = timestep_end
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_creep_rate]
type = ElementExtremeValue
block = clad
value_type = max
variable = creep_rate_aux
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = 3
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 40
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/fuel_pin_mesh_generator/capsule.i)
[Mesh]
[rodlet]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
nx_chamfer = 1
nx_flat = 3
nx_dish = 5
chamfer_width = 5e-4
chamfer_height = 1.6e-4
dish_depth = 3e-4
dish_radius = .002
pellet_mesh_density = customize
pellet_quantity = '3 2'
use_legacy_block_ids = false
fuel_base_name = fuel
ny_p = '15 16'
nx_c = 1
ny_cu = 1
ny_cl = 1
clad_mesh_density = customize
bottom_coordinate = 0.0025
[]
[capsule]
type = CapsuleMeshGenerator
bottom_coordinate = -0.0025
capsule_height = 0.075
capsule_radius = 0.01
capsule_thickness = 0.0005
top_bot_plug_height = 0.002
mesh_density = customize
nx_cl = 5
ny_cl = 2
nx_cu = 10
ny_cu = 3
block_id = 10
block_name = capsule
sideset_ids = '101 102 103 104 105 106'
sideset_names = 'capsule_inside_bottom capsule_inside_right capsule_inside_top capsule_outside_bottom capsule_outside_right capsule_outside_top'
[]
[combine]
type = CombinerGenerator
inputs = 'rodlet capsule'
[]
[translate]
type = TransformGenerator
input = combine
transform = translate
vector_value = '0 -0.0025 0'
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[pellet_centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/5pt5MPa/25C_sec/25C_sec_Hardy_Tube_Test_5pt5MPa.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
patch_size = 10
patch_update_strategy = iteration
partitioner = centroid
centroid_partitioner_direction = y
[gen]
type = FuelPinMeshGenerator
include_fuel = false
include_clad = true
pellet_outer_radius = 0.0072527
clad_gap_width = 0.0
clad_top_gap_height = 0.0
clad_bot_gap_height = 0.0
clad_thickness = 0.38e-3
pellet_height = 0.5
pellet_quantity = 1
clad_mesh_density = customize
nx_c = 2
ny_c = 50
elem_type = QUAD8
[]
[]
[Variables]
[temperature]
initial_condition = 600.0
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 40'
y = '1 1'
[]
[temp_function]
type = PiecewiseLinear
y = '600 1600'
[]
[temperature_profile]
type = PiecewiseBilinear
y = '0 40'
x = '0 0.25224 0.50448'
z = '0.995 1.01 0.995 0.995 1.01 0.995'
axis = 1
[]
[inner_temperature]
type = CompositeFunction
functions = 'temp_function temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = clad
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz
creep_strain_xx creep_strain_yy creep_strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_i = 2
index_j = 2
execute_on = timestep_end
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
factor = 0.0
function = pressure_function
[]
[inner_surface]
boundary = 'clad_inside_right clad_inside_bottom clad_inside_top'
function = pressure_function
[]
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 1001
value = 0.0
[]
[x_fix]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
function = inner_temperature
variable = temperature
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[Materials]
[clad_thermal]
type = ZryThermal
block = clad
zry_thermal_properties_model = MATPRO
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
matpro_youngs_modulus = true
matpro_poissons_ratio = true
temperature = temperature
[]
[clad_stress]
type = ComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
tangent_operator = nonlinear
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = true
model_thermal_creep = true
temperature_loca_creep_begin = 840 # values from the report
temperature_standard_thermal_creep_end = 975
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 600.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-5
nl_abs_tol = 1.0e-8
start_time = 0
n_startup_steps = 1
end_time = 40
dtmax = 1
dtmin = 0.0000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 1.0
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = all_clad_interior
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = total_hoop_strain
[]
[max_disp_x]
type = NodalExtremeValue
block = clad
value_type = max
variable = disp_x
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[csv]
type = CSV
[]
[chkfile]
type = CSV
show = 'max_disp_x max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_ANL_cladding_burst_tests/analysis/OCL5_8/OCL5_8_aniso.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.270
pellet_outer_radius = 4.78e-3
clad_bot_gap_height = 0.001
clad_top_gap_height = 0.013
clad_thickness = 0.71e-3
clad_gap_width = 0.1e-3
pellet_mesh_density = coarse
clad_mesh_density = coarse
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
initial_condition = 300.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0 496.02 520.74 528.12 545.94 551.28 671.52 885.3 1195.74 1410.36 1657.86 1680 1690 1700 1710 1720 1730 1740 1750 1760 1770 1780 1790 1800 1810 1820 1830 1840 1848'
y = '300 300 405.465 482.048 583.351 632.287 634.297 632.825 630.378 631.059 632.59 633 683 733 783 833 883 933 983 1033 1083 1133 1183 1233 1283 1333 1383 1433 1477'
[]
[temperature_profile]
type = PiecewiseBilinear
data_file = 'temp_profile.csv'
axis = 1
[]
[cladding_temperature]
type = CompositeFunction
functions = 'temperature_func temperature_profile'
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuelcladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.57 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.45 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.48 0.48'
[]
[L]
type = PiecewiseLinear
x = '-1000 10000'
y = '1.0 1.0'
[]
[M]
type = PiecewiseLinear
x = '-1000 10000'
y = '1.0 1.0'
[]
[N]
type = PiecewiseLinear
x = '-1000 10000'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
use_automatic_differentiation = true
add_variables = true
strain = FINITE
decomposition_method = TaylorExpansion
eigenstrain_names = 'fuel_thermal_strain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
use_automatic_differentiation = true
add_variables = true
strain = FINITE
decomposition_method = TaylorExpansion
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[burst]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = ADMaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = ADMaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
primary = 5
secondary = 10
variable = temperature
gap_conductivity = 0.15 # k of He per Netzsch
[]
[]
[BCs]
[clad_surface_temperature]
type = ADFunctionDirichletBC
variable = temperature
boundary = '2'
function = cladding_temperature
[]
[no_x_all]
type = ADDirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = ADDirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = ADDirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[outer_pressure]
boundary = '1 2 3'
factor = 101325
[]
[inner_pressure]
boundary = '4 5 6'
factor = 8.28e6
[]
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Materials]
[fuel_thermal]
type = ADHeatConductionMaterial
block = pellet
thermal_conductivity = 3.5
specific_heat = 330.0
[]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ADComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ADComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_density]
type = ADStrainAdjustedDensity
block = pellet
strain_free_density = 10980.0 #perfectly dense UO2
[]
[clad_thermal]
type = ADZryThermal
block = clad
temperature = temperature
[]
[clad_elasticity_tensor]
type = ADZryElasticityTensor
block = clad
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
[]
[hill_constants]
type = ADHillConstants
#hill_constants = "0.5 0.5 0.5 1.0 1.0 1.0"
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
[]
[clad_zrycreep]
type = ADZryAnisoCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_loca_creep_begin = 301
temperature_standard_thermal_creep_end = 300
fract_beta_phase_name = 'ad_fract_beta_phase'
[]
[thermal_expansion]
type = ADZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = ADStrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[phase_converter]
type = MaterialADConverter
block = clad
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-04
nl_abs_tol = 1.0e-08
start_time = 0
n_startup_steps = 1
end_time = 1800.0
dtmax = 100
dtmin = 0.0001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10.0
time_dt = '100 10'
time_t = '10 400'
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'max_clad_temp max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
[]
[]
(test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_bias.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
bx_p = .9
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
exodus = true
[]
(assessment/LWR/validation/IFA_636/analysis/IFA_636/IFA_636.i)
initial_fuel_density = 10551.78
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11
volumetric_locking_correction = false
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_mesh_density = customize
clad_mesh_density = customize
pellet_quantity = 1
pellet_height = 0.392
pellet_outer_radius = 4.097e-3
ny_p = 40
nx_p = 11
clad_gap_width = 78e-6
clad_bot_gap_height = 1e-3
plenum_fuel_ratio = 0.21628
clad_thickness = 0.5715e-3
nx_c = 4
ny_c = 80
ny_cl = 3
ny_cu = 3
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = pellet
initial_condition = 5e-6
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_swe]
order = CONSTANT
family = MONOMIAL
block = pellet
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = IFA_636_power_history.csv
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = IFA_636_axial_peaking.csv
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 213162351 213260400'
y = '0.0307 1 1 0.0307'
[]
[clad_temp_bc]
type = PiecewiseLinear
data_file = IFA_636_clad_bc.csv
format = columns
scale_factor = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
strain = FINITE
temperature = temp
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_swelling_eigenstrain
fuel_relocation_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[]
[clad]
block = clad
strain = FINITE
temperature = temp
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
extra_vector_tags = 'ref'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
creep_strain_xx creep_strain_xy creep_strain_yy creep_strain_zz'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
burnup_function = burnup
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
axial_power_profile = axial_peaking_factors
rod_ave_lin_pow = power_history
factor = 1.6e12
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[dvv0swe]
type = MaterialRealAux
variable = deltav_v0_swe
property = volumetric_swelling_strain
execute_on = timestep_end
block = pellet
[]
[]
[Burnup]
[burnup]
block = pellet
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00324000
a_upper = 0.39524
fuel_volume_ratio = 1
fuel_inner_radius = 0.0
fuel_outer_radius = 0.0040975
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0425 0.9575 0 0 0 0'
RPF = RPF
order = CONSTANT
family = MONOMIAL
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
formulation = KINEMATIC
model = frictionless
normalize_penalty = true
penalty = 1e14
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
normal_smoothing_distance = 0.1
quadrature = true
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_temp_bc
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 3.33e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.0e6
startup_time = 0
R = 8.3145
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[swelling]
type = UO2VolumetricSwellingEigenstrain
block = pellet
initial_fuel_density = 10551.78
burnup_function = burnup
temperature = temp
eigenstrain_name = fuel_swelling_eigenstrain
[]
[fuel_thermal]
type = UO2Thermal
block = pellet
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.039
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet
temperature = temp
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 293.0
thermal_expansion_coeff = 10e-6
eigenstrain_name = fuel_thermal_eigenstrain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet
burnup_function = burnup
diameter = 0.008194
diametral_gap =156.0e-6
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
burnup_relocation_stop = 0.029
relocation_activation1 = 5000
eigenstrain_name = fuel_relocation_eigenstrain
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_release]
type = UO2Sifgrs
block = pellet
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
initial_porosity = 0.039
gbs_model = true
transient_option = MICROCRACKING
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
temperature = temp
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
inelastic_models = 'clad_creep'
tangent_operator = 'elastic'
[]
[clad_creep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_fluence = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
zircaloy_material_type = stress_relief_annealed
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_irradition_growth]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_eigenstrain
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Dampers]
[BoundingValueNodalDamper]
type = BoundingValueNodalDamper
max_value = 3200
min_value = 200
variable = temp
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 50
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = -100
end_time = 213260400
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 15
iteration_window = 2
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[Postprocessors]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = pellet
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = pellet
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = pellet
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = pellet
burnup_function = burnup
variable = temp
[]
[fuel_disp_y_average]
type = AverageNodalVariableValue
boundary = top_of_top_pellet
variable = disp_y
[]
[volumetric_strain]
type = ElementAverageValue
block = pellet
variable = deltav_v0_swe
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet
cladding_blocks = clad
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
color = false
csv = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_burnup fission_gas_released fuel_disp_y_average rod_ave_lin_pow'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_ANL_cladding_burst_tests/analysis/OCL5_8/OCL5_8_ad.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_height = 0.270
pellet_outer_radius = 4.78e-3
clad_bot_gap_height = 0.001
clad_top_gap_height = 0.013
clad_thickness = 0.71e-3
clad_gap_width = 0.1e-3
pellet_mesh_density = coarse
clad_mesh_density = coarse
elem_type = QUAD8
[]
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
initial_condition = 300.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0 496.02 520.74 528.12 545.94 551.28 671.52 885.3 1195.74 1410.36 1657.86 1680 1690 1700 1710 1720 1730 1740 1750 1760 1770 1780 1790 1800 1810 1820 1830 1840 1848'
y = '300 300 405.465 482.048 583.351 632.287 634.297 632.825 630.378 631.059 632.59 633 683 733 783 833 883 933 983 1033 1083 1133 1183 1233 1283 1333 1383 1433 1477'
[]
[temperature_profile]
type = PiecewiseBilinear
data_file = 'temp_profile.csv'
axis = 1
[]
[cladding_temperature]
type = CompositeFunction
functions = 'temperature_func temperature_profile'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = pellet
use_automatic_differentiation = true
add_variables = true
strain = FINITE
decomposition_method = TaylorExpansion
eigenstrain_names = 'fuel_thermal_strain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy
stress_zz strain_xx strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[clad]
block = clad
use_automatic_differentiation = true
add_variables = true
strain = FINITE
decomposition_method = TaylorExpansion
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz hoop_stress'
extra_vector_tags = 'ref'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[burst]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[creep_rate_aux]
type = ADMaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = ADMaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = clad
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = clad_outside_right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = clad_outside_right
execute_on = timestep_end
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
primary = 5
secondary = 10
variable = temperature
gap_conductivity = 0.15 # k of He per Netzsch
[]
[]
[BCs]
[clad_surface_temperature]
type = ADFunctionDirichletBC
variable = temperature
boundary = '2'
function = cladding_temperature
[]
[no_x_all]
type = ADDirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = ADDirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = ADDirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[outer_pressure]
boundary = '1 2 3'
factor = 101325
[]
[inner_pressure]
boundary = '4 5 6'
factor = 8.28e6
[]
[]
[]
[PlenumTemperature]
[plenum_temp]
boundary = 5
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Materials]
[fuel_thermal]
type = ADHeatConductionMaterial
block = pellet
thermal_conductivity = 3.5
specific_heat = 330.0
[]
[fuel_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = pellet
youngs_modulus = 2.0e11
poissons_ratio = 0.345
[]
[fuel_elastic_stress]
type = ADComputeFiniteStrainElasticStress
block = pellet
[]
[fuel_thermal_expansion]
type = ADComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 10.0e-6
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_density]
type = ADStrainAdjustedDensity
block = pellet
strain_free_density = 10980.0 #perfectly dense UO2
[]
[clad_thermal]
type = ADZryThermal
block = clad
temperature = temperature
[]
[clad_elasticity_tensor]
type = ADZryElasticityTensor
block = clad
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = clad
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.5 0.5 0.5 1.0 1.0 1.0"
#hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
#function_names = "F G H L M N"
[]
[clad_zrycreep]
type = ADZryAnisoCreepLOCAUpdate
block = clad
temperature = temperature
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_loca_creep_begin = 301
temperature_standard_thermal_creep_end = 300
fract_beta_phase_name = 'ad_fract_beta_phase'
[]
[thermal_expansion]
type = ADZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_density]
type = ADStrainAdjustedDensity
block = clad
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[phase_converter]
type = MaterialADConverter
block = clad
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = clad_outside_right
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.0e-04
nl_abs_tol = 1.0e-08
start_time = 0
n_startup_steps = 1
end_time = 1800.0
dtmax = 100
dtmin = 0.0001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = material_timestep
dt = 10.0
time_dt = '100 10'
time_t = '10 400'
[]
[]
[Postprocessors]
[ave_clad_temp]
type = SideAverageValue
boundary = clad_outside_right
variable = temperature
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_hoop_stress]
type = ElementExtremeValue
block = clad
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = clad
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = clad
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = clad
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geo
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
perf_graph = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
show = 'max_clad_temp max_hoop_stress vonmises_stress_clad'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator1]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
[]
[]
(assessment/LWR/validation/Calvert_Cliffs-1_PROTOTYPE/analysis/BEN013/BEN013.i)
################################################################################
#
# Description: Calvert Cliffs BEN013
#
# Boundary condition: Inlet temperature and mass flux
#
# External files:
# power history file BEN013_power.csv
# axial peaking factor file BEN013_axial_peaking.csv
# flux boundary condition file BEN013_fast_flux.csv
#
################################################################################
initial_fuel_density = 10411.07 #94.882 %TD Assume TD = 10972.65 kg/cm3
[GlobalParams]
density = ${initial_fuel_density}
displacements = 'disp_x disp_y'
order = SECOND
energy_per_fission = 3.2e-11
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_mesh_density = customize
clad_thickness = 7.112e-4
pellet_mesh_density = customize
ny_p = 200
nx_c = 4
nx_p = 12
pellet_outer_radius = .00478155
ny_cu = 3
ny_c = 200
clad_bot_gap_height = 2.54e-3
pellet_quantity = 1
pellet_height = 3.47218
ny_cl = 3
clad_top_gap_height = 0.28581
clad_gap_width = 9.525e-5
elem_type = QUAD8
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 293
[]
[]
[AuxVariables]
[gap_conductance]
block = 'mechanical_secondary_subdomain'
[]
[fast_neutron_flux]
block = 1
[]
[fast_neutron_fluence]
block = 1
[]
[grain_radius]
block = 3
initial_condition = 4.2e-6
[]
[effective_creep_strain]
block = 1
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseConstant
data_file = BEN013_power.csv
direction = right
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = BEN013_axial_peaking.csv
scale_factor = 1
axis = 1
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-100 0 177922434 177922794'
y = '0.0065315 1 1 0.0065315'
[]
[temp_ramp]
type = PiecewiseLinear
x = '-100 0 177922434 177922794'
y = '293 557.15 557.15 293'
[]
[flux]
type = PiecewiseLinear
data_file = BEN013_fast_flux.csv
format = columns
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[pellets]
block = 3
strain = FINITE
eigenstrain_names = 'fuel_relocation_strain fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[clad]
block = 1
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz creep_strain_xx creep_strain_yy creep_strain_xy creep_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = '1 3'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = 3
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[gap_conductance]
type = GapConductanceMortar
primary_boundary = 5
secondary_boundary = 10
primary_subdomain = 'mechanical_primary_subdomain'
secondary_subdomain = 'mechanical_secondary_subdomain'
heat_flux = thermal_contact_thermal_lm
temperature = temp
variable = gap_conductance
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 1
axial_power_profile = axial_peaking_factors
function = flux
factor = 4.8e17 #n/m2-s
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = 3
variable = grain_radius
temperature = temp
execute_on = linear
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
block = clad
execute_on = timestep_end
[]
[oxide]
type = MaterialRealAux
property = oxide_scale_thickness
# temperature = temp
# fast_neutron_flux = fast_neutron_flux
variable = oxide_thickness
boundary = 2
# use_coolant_channel = true # true when oxide_thickness is coupled with coolant channel model
# oxide_scale_factor = 1.0 # a scale factor to increase oxidation rate
# model_option = 1
# lithium_concentration = 1.5 # average Li concentration
# tin_content = 1.45 # %
# execute_on = timestep_end
[]
[]
[Burnup]
[burnup]
block = 3
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 81
num_axial = 11
a_lower = 0.00478
a_upper = 3.47696
fuel_inner_radius = 0.0
fuel_outer_radius = 0.00478155
fuel_volume_ratio = 1
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.0367 .9633 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[mechanical]
model = coulomb
formulation = mortar
primary = 5
secondary = 10
friction_coefficient = 0.4
c_normal = 1e+12
c_tangential = 1e+24
tangential_lm_scaling = 1.0e-16
normal_lm_scaling = 1.0e-10
[]
[]
[ThermalContactMortar]
[thermal_contact]
secondary_variable = temp
primary_boundary = '5'
secondary_boundary = '10'
initial_moles = initial_moles
gas_released = fission_gas_released
jump_distance_model = LANNING
plenum_pressure = plenum_pressure
contact_pressure = mechanical_normal_lm
roughness_primary = 2e-6
roughness_secondary = 1e-6
roughness_coef = 3.2
thermal_lm_scaling = 1.0e-2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_clad_bottom]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[no_y_fuel_bottom]
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 15.51320391e6
function = pressure_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.72342913e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temperature
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
displacements = 'disp_x disp_y'
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = temp_ramp
inlet_pressure = 15.51320391e6
inlet_massflux = 3682.143 # kg/m^2-sec
rod_diameter = 0.011176 # m
rod_pitch = 1.473e-2 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = 3
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = 3
thermal_conductivity_model = NFIR
temperature = temp
burnup = burnup
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = 3
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeFiniteStrainElasticStress
block = 3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 3
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = 3
burnup_function = burnup
diameter = 0.0095631 #Fuel pellet diameter in m
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
diametral_gap =190.5e-6
relocation_activation1 = 5000
burnup_relocation_stop = 0.029
eigenstrain_name = fuel_relocation_strain
[]
[fuel_volumetric_swelling]
type = UO2VolumetricSwellingEigenstrain
block = 3
temperature = temp
burnup = burnup
initial_fuel_density = 10411.07
total_densification = 0.01
initial_porosity = 0.05
eigenstrain_name = fuel_volumetric_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 2
clad_inner_radius = 0.0048768
clad_outer_radius = 0.005588
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
[]
[clad_thermal]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[clad_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = clad
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 293.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6551.0
[]
[fission_gas_release]
type = UO2Sifgrs
block = 3
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
burnup = burnup
transient_option = MICROCRACKING
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_converged_reason -ksp_converged_reason -snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-12'
line_search = 'none'
verbose = true
l_max_its = 100
l_tol = 8e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
start_time = -100
end_time = 177922794
dtmax = 1e6
dtmin = 1
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
optimal_iterations = 200
linear_iteration_ratio = 100
timestep_limiting_function = power_history
max_function_change = 3e20
force_step_every_function_point = true
[]
[]
[Postprocessors]
[avg_gap_conductance]
type = ElementAverageValue
block = 'mechanical_secondary_subdomain'
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[fis_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = 3
outputs = exodus
[]
[fis_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = 3
outputs = exodus
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[average_fission_rate]
type = ElementAverageValue
block = 3
variable = fission_rate
[]
[rod_ave_lin_pow]
type = ElementIntegralPower
block = 3
fission_rate = fission_rate
variable = temp
[]
[disp_y_3023]
type = NodalVariableValue
nodeid = 3022
variable = disp_y
[]
[]
[StandardLWRFuelRodOutputs]
temperature = temp
fuel_pellet_blocks = 3
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
csv = true
color = false
print_linear_residuals = true
perf_graph = true
[console]
type = Console
max_rows = 40
[]
[chkfile]
type = CSV
show = 'average_centerline_fuel_temperature fission_gas_released_percentage maximum_clad_elongation maximum_fuel_elongation'
# execute_on = 'FINAL'
sync_times = '3600 7200 10800 14400 177922434 177922794'
sync_only = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_intervals1_bias.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
intervals = '0.01186 0.01186'
intervals_ny = '2 4'
ny_c_plenum = 12
ny_c_bot_gap = 6
bx_p = 0.9
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
preset = false
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad_right]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
exodus = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_D/x441_grp_D.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_quad8_bias.i)
[Mesh]
[gen]
type = FuelPinMeshGenerator
clad_top_gap_height = 6.0413e-4
bx_p = .9
elem_type = QUAD8
[]
[]
[Variables]
[u]
order = SECOND
initial_condition = 100
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 200
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 100
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 100
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
exodus = true
[]
(test/tests/fuel_pin_mesh_generator/fuel_pin_mesh_customize.i)
###########################################################
# This is a simple test demonstrating the ability of a user
# to create a customized mesh.
#
# @Requirement F2.110
###########################################################
[Mesh]
[gen]
type = FuelPinMeshGenerator
pellet_quantity = 1
pellet_mesh_density = 'customize'
clad_mesh_density = 'customize'
nx_p = 6
ny_p = 8
nx_c = 2
ny_c = 8
ny_cu = 1
ny_cl = 1
pellet_outer_radius = 0.0041
pellet_height = 0.05
clad_gap_width = 80e-6
clad_bot_gap_height = 1.27e-3
clad_thickness = 0.56e-3
bottom_clad_height = 5.0e-3
top_clad_height = 5.0e-3
plenum_fuel_ratio = 0.177033
elem_type='QUAD4'
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[centerline]
type = DirichletBC
variable = u
boundary = centerline
value = 1
preset = false
[]
[pellet_outer_rad_surface]
type = DirichletBC
variable = u
boundary = pellet_outer_radial_surface
value = 0
[]
[clad]
type = DirichletBC
variable = u
boundary = clad_outside_right
value = 0
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
[]
[Outputs]
exodus = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_F/x441_grp_F.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/sodium_coolant_channel/dp16_old.i)
# This test applies the old coolant channel model to a realistic geometry, e.g. dp16 from EBR-II.
# Ultimately, this test is important for comparison to the new sodium coolant channel model
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
# rod specific parameters
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.381e-03
pellet_outer_radius = 2.184e-03
pellet_height = 3.442e-01
clad_top_gap_height = 2.949e-01
clad_gap_width = 3.556e-04
bottom_clad_height = 2.24e-3 # arbitrary
top_clad_height = 2.24e-3 # arbitrary
clad_bot_gap_height = 0.31e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 10
ny_p = 10
nx_c = 10
ny_c = 30
ny_cu = 3
ny_cl = 3
pellet_quantity = 1
[]
# mesh options
partitioner = centroid
centroid_partitioner_direction = y
[]
[DefaultElementQuality]
failure_type = Warning
[]
[Variables]
[temp]
initial_condition = 300
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie_fuel]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = pellet
density_name = 15800
[]
[heat_ie_clad]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = clad
density_name = 7876
[]
[heat_source]
type = ADFissionRateHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxVariables]
[cdf]
[]
[]
[AuxKernels]
[cdf_aux]
type = FunctionAux
variable = cdf
function = row_4_cdf
[]
[]
[Functions]
[dp16_power]
type = PiecewiseLinear
# min power, weighted avg, max power
x = '0 1'
y = '44734 44734'
[]
[row_4]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 3.442e-01
pellet_y_start = 2.24e-3
zero_beyond_top_and_bottom = true
[]
[row_4_cdf]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 3.442e-01
pellet_y_start = 2.24e-3
zero_beyond_top_and_bottom = true
cdf = true
[]
[]
[FluidProperties]
[sodium_uo]
type = SodiumProperties
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 'clad_outside_right'
variable = temp
inlet_temperature = 648
inlet_pressure = 1
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.842e-03 # m
rod_pitch = 6.909e-03 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = dp16_power
axial_power_profile = row_4
subchannel_geometry = triangular
outputs = all
thermal_conductivity = reg_thermal_conductivity
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 'clad_inside_right'
secondary = 'pellet_outer_radial_surface'
quadrature = true
gap_conductivity = 61.0
min_gap = 3.556E-04
[]
[]
[Materials]
[fission_rate]
type = ADUPuZrFissionRate
rod_linear_power = dp16_power
axial_power_profile = row_4
pellet_radius = 2.184e-03
X_Zr = 0.225
block = pellet
outputs = all
[]
[metal_fuel_thermal]
type = ADUPuZrThermal
block = pellet
X_Zr = 0.225
X_Pu = 0
spheat_model = savage
thcond_model = lanl
porosity = 0
temperature = temp
[]
[clad_thermal]
type = ADHT9Thermal
block = clad
temperature = temp
[]
[convert]
type = MaterialADConverter
ad_props_in = 'thermal_conductivity'
reg_props_out = 'reg_thermal_conductivity'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 1
dt = .1
[]
[Postprocessors]
[temp_fuel_avg]
type = ElementAverageValue
variable = temp
block = pellet
[]
[temp_fuel_max]
type = ElementExtremeValue
variable = temp
block = pellet
[]
[temp_clad_avg]
type = ElementAverageValue
variable = temp
block = clad
[]
[temp_clad_max]
type = ElementExtremeValue
variable = temp
block = clad
[]
[temp_oulet]
type = ElementExtremeValue
variable = coolant_temperature
[]
[]
[VectorPostprocessors]
[cladding]
type = SideValueSampler
boundary = clad_outside_right
sort_by = y
variable = 'coolant_temperature coolant_channel_htc'
[]
[centerline]
type = SideValueSampler
boundary = centerline
sort_by = y
variable = 'temp'
[]
[]
[Outputs]
[out]
type = CSV
execute_on = final
[]
[]
(examples/metal_fuel/uzr_densification/ebr2_2d_interpores_densification.i)
# Baseline of U10Zr DP21 pin without bond sodium in 2D.
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
temperature = Temperature
stress_free_temperature = 298.0
tangential_tolerance = 1e-4
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 50
patch_update_strategy = always
partitioner = centroid
centroid_partitioner_direction = y
[fuel_2d]
type = FuelPinMeshGenerator
clad_thickness = 3.81e-4
pellet_outer_radius = 24.4e-4
pellet_height = 250.0e-4
clad_top_gap_height = 240.0e-4
clad_gap_width = 1.0e-4
bottom_clad_height = 80.0e-4
top_clad_height = 80.0e-4
clad_bot_gap_height = 10.0e-4
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 20
ny_p = 150
nx_c = 4
ny_c = 150
ny_cu = 8
ny_cl = 8
pellet_quantity = 1
elem_type = QUAD4
[]
[]
[Variables]
[Temperature]
initial_condition = 298.0
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[energy_density]
order = CONSTANT
family = MONOMIAL
block = pellet
initial_condition = 0.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 109989115 110376000'
y = '0 45000 45000 0' # LHGR (not power density)
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 1.5552e7'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 2e5 109989115 110376000'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1.0
[]
[engr_radial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_rad / 2.50e-03'
symbol_values = 'max_fuel_radial_disp'
symbol_names = 'fuel_disp_rad'
[]
[engr_axial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_axial / 100.0e-3'
symbol_values = 'max_fuel_elongation'
symbol_names = 'fuel_disp_axial'
[]
[fission_rate_scale_factor]
type = ParsedFunction
expression = 1.670784726E+15
# 1/cross_sectional_area_of_fuel/energy_per_fission =
# Remember to remove hole area, when there are some
[]
[fission_history]
type = CompositeFunction
functions = 'power_history fission_rate_scale_factor'
# This converts it to a fission rate density.
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz hoop_stress'
[fuel]
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
additional_generate_output = 'volumetric_strain'
[]
[clad]
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
additional_generate_output = 'hoop_creep_strain hoop_elastic_strain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = Temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = Temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = FissionRateHeatSource
variable = Temperature
fission_rate = 'fission_rate'
extra_vector_tags = 'ref'
block = pellet
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[time_integral_fission]
type = VariableTimeIntegrationAux
block = pellet
variable = energy_density
variable_to_integrate = fission_rate
coefficient = 3.2e-11 # energy_per_fission
order = 2
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = Temperature
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = 0.1e-3
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = Temperature
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5000.0 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 0.0069 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
outputs = all
output_properties = 'coolant_temperature coolant_channel_htc'
[]
[]
[Materials]
[fission_rate]
type = GenericFunctionMaterial
prop_names = 'fission_rate'
prop_values = fission_history
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
block = pellet
density = ${initial_fuel_density}
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = 0.225
X_Pu = 0.0
block = pellet
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
eigenstrain_name = fuel_thermal_strain
block = pellet
thermal_expansion_coeff = 1.18e-5
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.3
bubble_number_density = 8.61e17
interconnection_initiating_porosity = 0.26
interconnection_terminating_porosity = 0.28
anisotropic_factor = 0.0
densification = true
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = 0.225
X_Pu = 0.0
spheat_model = savage
thcond_model = lanl
porosity = porosity
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
critical_porosity = 0.27
fractional_fgr_initial = 0.252
fractional_fgr_post = 0.801
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 3e13 # This was recommended in FastNeutronFluxAux for LHGR
# However, this gives 1.35e18 which is not what AL used
# before of 2.47e19. Not sure which is right.
calculate_fluence = true
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors # which is just 1
outputs = all
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = Temperature
max_increment = 50
[]
[]
[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 = 100
l_tol = 1e-3
nl_max_its = 100
nl_rel_tol = 1e-5
nl_abs_tol = 1e-7
end_time = 110376000 # 3.5 years. If need faster run, then 1 year should be fine
dtmin = 10
dtmax = 5e6
num_steps = 5
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 1.54656e7 1.5552e7'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = Temperature
execute_on = 'initial linear'
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = Temperature
[]
[peak_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = Temperature
[]
[peak_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = Temperature
block = clad
[]
[max_clad_temp]
type = ElementExtremeValue
variable = Temperature
value_type = max
block = clad
[]
[peak_clad_temp]
type = TimeExtremeValue
value_type = max
postprocessor = max_clad_temp
[]
[avg_fuel_temp]
type = ElementAverageValue
variable = Temperature
block = pellet
[]
[max_fuel_temp]
type = ElementExtremeValue
variable = Temperature
value_type = max
block = pellet
[]
[peak_fuel_temp]
type = TimeExtremeValue
value_type = max
postprocessor = max_fuel_temp
[]
[peak_coolant_temperature]
type = ElementExtremeValue
variable = coolant_temperature
value_type = max
block = clad
outputs = all
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[max_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = Temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = Temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = Temperature
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_burnup]
type = ElementExtremeValue
value_type = max
block = pellet
variable = burnup
[]
[min_burnup]
type = ElementExtremeValue
value_type = min
block = pellet
variable = burnup
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
block = pellet
mat_prop = fis_gas_rel
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
block = pellet
mat_prop = fis_gas_prod
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_radial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_xx
[]
[max_fuel_axial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_yy
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 11
[]
[max_fuel_radial_disp]
type = NodalExtremeValue
variable = disp_x
boundary = 10
[]
[engr_strain_fuel_radial]
type = FunctionValuePostprocessor
function = engr_radial_strain_fuel
[]
[engr_strain_fuel_axial]
type = FunctionValuePostprocessor
function = engr_axial_strain_fuel
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 3
[]
[etot_bison]
type = ElementIntegralVariablePostprocessor
block = pellet
variable = energy_density
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
color = true
exodus = true
perf_graph = true
csv = true
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y Temperature'
show_var_residual_norms = true
[]
(include/meshgenerators/FuelPinMeshGeneratorFIPD.h)
/*************************************************/
/* DO NOT MODIFY THIS HEADER */
/* */
/* BISON */
/* */
/* (c) 2015 Battelle Energy Alliance, LLC */
/* ALL RIGHTS RESERVED */
/* */
/* Prepared by Battelle Energy Alliance, LLC */
/* Under Contract No. DE-AC07-05ID14517 */
/* With the U. S. Department of Energy */
/* */
/* See COPYRIGHT for full restrictions */
/*************************************************/
#pragma once
#include "FuelPinMeshGenerator.h"
class NonlinearSystem;
namespace libMesh
{
class ReplicatedMesh;
}
class FuelPinMeshGeneratorFIPD : public FuelPinMeshGenerator
{
public:
static InputParameters validParams();
FuelPinMeshGeneratorFIPD(const InputParameters & parameters);
protected:
const std::string _fipd_geom_file_name;
const std::vector<unsigned> _fuel_length_priority;
const std::vector<unsigned> _fuel_diameter_priority;
const std::vector<unsigned> _clad_od_priority;
const std::vector<unsigned> _clad_thick_priority;
const std::vector<unsigned> _sodium_level_priority;
const std::vector<unsigned> _plenum_vol_priority;
Real & _sodium_volume;
Real & _cladding_radius;
Real & _cladding_thickness;
Real & _fuel_height;
Real & _fuel_radius;
Real & _cladding_start;
Real & _cladding_end;
Real & _wire_wrap_diameter;
Real & _clad_bottom_gap;
bool prioritySanity(std::vector<unsigned> priority_vec);
void parse();
};