- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- comparedless_equalOptions for variable _compared_ to criteria: greater_than greater_equal less_equal less_than
Default:less_equal
C++ Type:MooseEnum
Controllable:No
Description:Options for variable _compared_ to criteria: greater_than greater_equal less_equal less_than
- computeTrueWhen false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
Default:True
C++ Type:bool
Controllable:No
Description:When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
- constant_criteria0Numerical value providing criteria value.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Numerical value providing criteria value.
- constant_onNONEWhen ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
Default:NONE
C++ Type:MooseEnum
Controllable:No
Description:When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped
- declare_suffixAn optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
- effective_strain_rate_creepEffective creep strain rate in the cladding (1/s)
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Effective creep strain rate in the cladding (1/s)
- effective_strain_rate_plasticityEffective plastic strain rate in the cladding (1/s)
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Effective plastic strain rate in the cladding (1/s)
- failure_criterioncombined_overstress_and_plastic_instabilityOptions to determine when the cladding material is considered to have burst
Default:combined_overstress_and_plastic_instability
C++ Type:MooseEnum
Controllable:No
Description:Options to determine when the cladding material is considered to have burst
- fraction_beta_phaseVolume fraction of Zr beta phase
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Volume fraction of Zr beta phase
- fraction_oxygen_gainWeight fraction of gained oxygen in the cladding
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Weight fraction of gained oxygen in the cladding
- function_criteriaFunction name providing criteria value.
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Function name providing criteria value.
- heating_rateOptional constant heating rate in K/s. If not provided, the heating rate will be calculated based on time step size and the local change in temperature.
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Optional constant heating rate in K/s. If not provided, the heating rate will be calculated based on time step size and the local change in temperature.
- hoop_creep_strainThe hoop creep strain in the cladding (-)
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The hoop creep strain in the cladding (-)
- hoop_strainThe total hoop strain (-)
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The total hoop strain (-)
- hoop_stressHoop stress in cladding, in Pa
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Hoop stress in cladding, in Pa
- temperatureTemperature in cladding (K)
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Temperature in cladding (K)
- variable_checkVariable name which is compared to criteria. Example: Var < 0, true=failed
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Variable name which is compared to criteria. Example: Var < 0, true=failed
ZryCladdingFailure
Models the failure of Zircaloy-4 cladding due to burst under LOCA conditions.
Description
For modeling failure due to burst of Zircaloy-4 claddings during Loss-of-Coolant Accident simulations, the BISON model ZryCladdingFailure offers six different options:
Overstress Criterion
An overstress criterion, which assumes that the time of burst is reached when the local hoop stress equals a limiting burst stress (Erbacher et al., 1982): (1) where (MPa) is the hoop stress and (MPa) is the burst stress.
The calculation of the burst stress follows the work of Erbacher et al. (1982). Based on experimental evidence, the burst stress is considered to depend on the temperature and oxygen concentration in the cladding and is represented by: (2) where (MPa) and (K) are constants determined experimentally, and (dimensionless) is the oxygen weight fraction in the cladding. An oxygen weight fraction at fabrication, , is used following Erbacher et al. (1982). The current oxygen weight fraction is computed based on the oxygen mass gain from the oxidation model ZryOxidation as where (m) is the cladding outer radius, = 6550 kg/m the density of the cladding metal, (m) the cladding inner radius, g (kg/m) the oxygen mass, see ZryOxidation, and with S (m) as the oxide layer thickness, see ZryOxidation, and R=1.56 is the Pilling-Bedworth ratio for Zircaloy.
The values for the parameters a and b are given in the table for material parameters depending on phase. In the mixed phase () region, linear interpolations of ln(a) and b are made between the values for pure and middle of ( ) phase, and between and pure phase (Erbacher et al., 1982). The volume fractions of each phase are calculated by the phase transformation model described in ZrPhase.
Table 1: Material parameters used to calculate the burst stress of Zircaloy-4 (Erbacher et al., 1982)
| Zr Phase | a (MPa) | b (K) |
|---|---|---|
| 830 | ||
| 3000 | ||
| 2300 |
Plastic Instability or Strain Rate Criterion
A plastic instability or strain rate criterion, which considers cladding burst at the attainment of a limiting value for the effective plastic strain rate: (3) where is the effective plastic (creep + plasticity) strain rate and is the limiting value. Following Marcello et al. (2014), we set h s.
Combined Overstress and Plastic Instability Criterion
A combined overstress and plastic instability failure criterion, which establishes that cladding burst occurs when either condition Eq. (1) or Eq. (3) is fulfilled.
Overstrain Criterion
An overstrain criterion, which considers cladding burst once the permanent engineering hoop strain (i.e., creep) exceeds 40%. In BISON true strain is used and therefore the permanent engineering hoop strain limit is given by:
where burst occurs if (4)
Combined Overstress and Overstrain Criterion
A combined overstress and overstrain failure criterion, which establishes that cladding burst occurs when either condition Eq. (1) or Eq. (4) is fulfilled.
It has been noted that the overstress criterion may lead to unsafe predictions in low-stress situations (Marcello et al., 2014). Also, we note that the formulation for the burst stress was derived from experiments carried out on fresh claddings (Erbacher et al., 1982). When applied to BISON simulations involving pre-irradiation before the LOCA transient, the burst stress approach has been found to be inadequate as it predicts early cladding failure due to an excessively low burst stress in presence of pre-LOCA oxidation. Accordingly, using one of the combined criteria is recommended for fresh cladding simulations, while either the strain rate or overstrain criterion are recommended for other cases.
Rupture Temperature Criterion
A stress dependent rupture temperature was developed by Chapman and summarized in Powers and Meyer (1980). The correlation accounts for ramping rates in furnace tests. The ramping rate effect saturates at a value of 28 K/s. The rupture temperature () is given by: where is the engineering hoop stress (kpsi), is the heating rate ratio given by the supplied heating rate to 28 K/s (i.e., varies from 0 to 1). The cladding is determined to fail when . Since BISON uses SI units and computes true stress and strain by default the conversion to Pa and engineering stress is computed internally.
Example Input Syntax
An example of using the overstress failure criterion is given by:
[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
[failure_criterion]
type = ZryCladdingFailure<<<{"description": "Models the failure of Zircaloy-4 cladding due to burst under LOCA conditions.", "href": "ZryCladdingFailure.html"}>>>
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = right #3
failure_criterion<<<{"description": "Options to determine when the cladding material is considered to have burst"}>>> = overstress
hoop_stress<<<{"description": "Hoop stress in cladding, in Pa"}>>> = hoop_stress
temperature<<<{"description": "Temperature in cladding (K)"}>>> = temp
fraction_beta_phase<<<{"description": "Volume fraction of Zr beta phase"}>>> = fract_beta_phase
[]
[](test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_overstress.i)An example of using the plastic instability failure criterion is given by:
[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
[failure_criterion]
type = ZryCladdingFailure<<<{"description": "Models the failure of Zircaloy-4 cladding due to burst under LOCA conditions.", "href": "ZryCladdingFailure.html"}>>>
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = right #3
failure_criterion<<<{"description": "Options to determine when the cladding material is considered to have burst"}>>> = plastic_instability
effective_strain_rate_creep<<<{"description": "Effective creep strain rate in the cladding (1/s)"}>>> = creep_rate
temperature<<<{"description": "Temperature in cladding (K)"}>>> = temp
[]
[](test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_plastic_instability.i)An example of using the combined overstress and plastic instability failure criterion is given by:
[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
[failure_criterion]
type = ZryCladdingFailure<<<{"description": "Models the failure of Zircaloy-4 cladding due to burst under LOCA conditions.", "href": "ZryCladdingFailure.html"}>>>
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = right #3
failure_criterion<<<{"description": "Options to determine when the cladding material is considered to have burst"}>>> = combined_overstress_and_plastic_instability
hoop_stress<<<{"description": "Hoop stress in cladding, in Pa"}>>> = hoop_stress
effective_strain_rate_creep<<<{"description": "Effective creep strain rate in the cladding (1/s)"}>>> = creep_rate
temperature<<<{"description": "Temperature in cladding (K)"}>>> = temp
fraction_beta_phase<<<{"description": "Volume fraction of Zr beta phase"}>>> = fract_beta_phase
[]
[](test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_overstress_plastic_instability.i)An example of using the overstrain failure criterion is given by:
[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
[clad_failure_criterion]
type = ZryCladdingFailure<<<{"description": "Models the failure of Zircaloy-4 cladding due to burst under LOCA conditions.", "href": "ZryCladdingFailure.html"}>>>
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = 2
failure_criterion<<<{"description": "Options to determine when the cladding material is considered to have burst"}>>> = overstrain
hoop_stress<<<{"description": "Hoop stress in cladding, in Pa"}>>> = hoop_stress
hoop_creep_strain<<<{"description": "The hoop creep strain in the cladding (-)"}>>> = creep_strain_zz
effective_strain_rate_creep<<<{"description": "Effective creep strain rate in the cladding (1/s)"}>>> = creep_rate
temperature<<<{"description": "Temperature in cladding (K)"}>>> = temperature
fraction_beta_phase<<<{"description": "Volume fraction of Zr beta phase"}>>> = fract_beta_phase
[]
[](assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1.i)An example of using the combined overstress and overstrain failure criterion is given by:
[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
[clad_failure_criterion]
type = ZryCladdingFailure<<<{"description": "Models the failure of Zircaloy-4 cladding due to burst under LOCA conditions.", "href": "ZryCladdingFailure.html"}>>>
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = clad_outside_right
failure_criterion<<<{"description": "Options to determine when the cladding material is considered to have burst"}>>> = combined_overstress_and_overstrain
hoop_stress<<<{"description": "Hoop stress in cladding, in Pa"}>>> = hoop_stress
hoop_creep_strain<<<{"description": "The hoop creep strain in the cladding (-)"}>>> = creep_strain_zz
effective_strain_rate_creep<<<{"description": "Effective creep strain rate in the cladding (1/s)"}>>> = creep_rate_aux
temperature<<<{"description": "Temperature in cladding (K)"}>>> = temperature
fraction_beta_phase<<<{"description": "Volume fraction of Zr beta phase"}>>> = fract_beta_phase
[]
[](assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/base_input/Hardy_Tube_Test.i)An examples of using the rupture temperature failure criterion is given by:
[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
[failure_criterion]
type = ZryCladdingFailure<<<{"description": "Models the failure of Zircaloy-4 cladding due to burst under LOCA conditions.", "href": "ZryCladdingFailure.html"}>>>
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = right
failure_criterion<<<{"description": "Options to determine when the cladding material is considered to have burst"}>>> = rupture_temperature
hoop_stress<<<{"description": "Hoop stress in cladding, in Pa"}>>> = stress_zz
hoop_strain<<<{"description": "The total hoop strain (-)"}>>> = strain_zz
temperature<<<{"description": "Temperature in cladding (K)"}>>> = temperature
fraction_beta_phase<<<{"description": "Volume fraction of Zr beta phase"}>>> = fract_beta_phase
[]
[](test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_rupture_temperature.i)Input Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Controllable:No
Description:The seed for the master random number generator
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
- output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)
C++ Type:std::vector<std::string>
Controllable:No
Description:List of material properties, from this material, to output (outputs must also be defined to an output type)
- outputsnone Vector of output names where you would like to restrict the output of variables(s) associated with this object
Default:none
C++ Type:std::vector<OutputName>
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
Outputs Parameters
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Material Property Retrieval Parameters
Input Files
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/0pt5MPa/25C_sec/25C_sec_Hardy_Tube_Test_0pt5MPa.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-16/puzry-16.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_08MPa/rebeka_singlerod_2d_08MPa.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-23/puzry-23.i)
- (test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/ad_zry_clad_failure_overstress_plastic_instability.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-15/puzry-15.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-04/puzry-04_aniso.i)
- (test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_overstress.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-05/puzry-05.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_06MPa/rebeka_singlerod_2d_06MPa.i)
- (assessment/LWR/validation/LOCA_ORNL_cladding_burst_tests/analysis/Zr2_1/ornl_zr2_1.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-31/puzry-31_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-02/puzry-02.i)
- (test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/ad_zry_clad_failure_overstrain.i)
- (test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/ad_zry_clad_failure_overstress.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_06MPa/rebeka_singlerod_2d_06MPa_aniso.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_01MPa/rebeka_singlerod_2d_01MPa.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/base_input/Hardy_Tube_Test.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-22/puzry-22_aniso.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/2pt1MPa/100C_sec/100C_sec_Hardy_Tube_Test_2pt1MPa.i)
- (test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/ad_zry_clad_failure_overstress_overstrain.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_10MPa/rebeka_singlerod_2d_10MPa_aniso.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_10/IFA_650_10_part1.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_3d_10MPa_01Kpers_90deg/rebeka_singlerod_3d_10MPa_90deg.i)
- (test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_overstress_plastic_instability.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-08/puzry-08.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-19/puzry-19_aniso.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_10MPa/rebeka_singlerod_2d_10MPa_1pt5.i)
- (assessment/LWR/validation/LOCA_ORNL_cladding_burst_tests/analysis/Zr2_2/ornl_zr2_2_aniso.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part2.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-06/puzry-06.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_08MPa/rebeka_singlerod_2d_08MPa_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-11/puzry-11_aniso.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1_gas_communication.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/1pt0MPa/25C_sec/25C_sec_Hardy_Tube_Test_1pt0MPa.i)
- (assessment/LWR/validation/LOCA_ORNL_cladding_burst_tests/analysis/Zr4_1/ornl_zr4_1.i)
- (assessment/LWR/validation/LOCA_ANL_cladding_burst_tests/analysis/OCL5_8/OCL5_8.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_14MPa/rebeka_singlerod_2d_14MPa.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-26/puzry-26.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part2.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-15/puzry-15_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-10/puzry-10.i)
- (assessment/LWR/validation/LOCA_ANL_cladding_burst_tests/analysis/OCL11/OCL11.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-20/puzry-20_aniso.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part2_1p5d_fr_frd.i)
- (assessment/LWR/validation/LOCA_ORNL_cladding_burst_tests/analysis/Zr2_2/ornl_zr2_2.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-26/puzry-26_aniso.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part1.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_10MPa/rebeka_singlerod_2d_10MPa_1pt5_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-08/puzry-08_aniso.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/0pt7MPa/100C_sec/Hardy_Tube_Test_0pt7MPa.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-31/puzry-31.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_196/Studsvik_196_part1_1p5d_fr_ffrd.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/0pt3MPa/100C_sec/100C_sec_Hardy_Tube_Test_0pt3MPa.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part1_1p5d_fr_frd.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_02MPa/rebeka_singlerod_2d_02MPa_aniso.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/1pt4MPa/100C_sec/100C_sec_Hardy_Tube_Test_1pt4MPa.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-14/puzry-14.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-14/puzry-14_aniso.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/13pt8MPa/25C_sec/25C_sec_Hardy_Tube_Test_13pt8MPa.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-07/puzry-07.i)
- (assessment/LWR/validation/LOCA_ORNL_cladding_burst_tests/analysis/Zr4_1/ornl_zr4_1_ad_hill.i)
- (test/tests/plenum_pressure/past_rupture.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-20/puzry-20.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/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-02/puzry-02_aniso.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/3pt8MPa/25C_sec/25C_sec_Hardy_Tube_Test_3pt8MPa.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_9/IFA_650_9_part1.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-11/puzry-11.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-09/puzry-09.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_10/IFA_650_10_part2.i)
- (test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_overstrain.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-01/puzry-01_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-29/puzry-29.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-28/puzry-28.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-27/puzry-27_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-10/puzry-10_aniso.i)
- (assessment/LWR/validation/LOCA_ORNL_cladding_burst_tests/analysis/Zr4_1/ornl_zr4_1_ad_hill_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-16/puzry-16_aniso.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_10MPa/rebeka_singlerod_2d_10MPa.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-18/puzry-18_aniso.i)
- (assessment/LWR/validation/LOCA_ANL_cladding_burst_tests/analysis/OCL11/OCL11_aniso.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_12MPa/rebeka_singlerod_2d_12MPa_aniso.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_196/Studsvik_196_part1.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-12/puzry-12_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-04/puzry-04.i)
- (test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/ad_zry_clad_failure_rupture_temperature.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_04MPa/rebeka_singlerod_2d_04MPa.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_04MPa/rebeka_singlerod_2d_04MPa_aniso.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_9/IFA_650_9_part2.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-07/puzry-07_aniso.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/0pt7MPa/25C_sec/25C_sec_Hardy_Tube_Test_0pt7MPa.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_12MPa/rebeka_singlerod_2d_12MPa.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_14MPa/rebeka_singlerod_2d_14MPa_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-21/puzry-21.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/2pt8MPa/25C_sec/25C_sec_Hardy_Tube_Test_2pt8MPa.i)
- (assessment/LWR/validation/LOCA_ORNL_cladding_burst_tests/analysis/Zr2_1/ornl_zr2_1_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-25/puzry-25.i)
- (assessment/LWR/validation/LOCA_ANL_cladding_burst_tests/analysis/OCL11/OCL11_ad.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part3_gas_communication.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-01/puzry-01.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-03/puzry-03.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_01MPa/rebeka_singlerod_2d_01MPa_aniso.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part2_gas_communication.i)
- (assessment/LWR/validation/LOCA_Studsvik/analysis/rod_196/Studsvik_196_part2_1p5d_fr_ffrd.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/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-30/puzry-30_aniso.i)
- (test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_overstress_overstrain.i)
- (test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_plastic_instability.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-24/puzry-24_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-05/puzry-05_aniso.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/0pt3MPa/25C_sec/25C_sec_Hardy_Tube_Test_0pt3MPa.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-30/puzry-30.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT6A/MT6A_1-1kW.i)
- (test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_rupture_temperature.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-09/puzry-09_aniso.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_10MPa/rebeka_singlerod_2d_10MPa_aniso_hunt.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-29/puzry-29_aniso.i)
- (assessment/LWR/validation/LOCA_Hardy_cladding_test/analysis/2pt1MPa/25C_sec/25C_sec_Hardy_Tube_Test_2pt1MPa.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-18/puzry-18.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-17/puzry-17.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-24/puzry-24.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-25/puzry-25_aniso.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT6A/MT6A_1-2kW.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-13/puzry-13.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-19/puzry-19.i)
- (assessment/LWR/validation/LOCA_MT4_MT6A/analysis/MT4/MT4_1-1kW.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)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-23/puzry-23_aniso.i)
- (assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_2/IFA_650_2.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-03/puzry-03_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-22/puzry-22.i)
- (assessment/LWR/validation/LOCA_ORNL_cladding_burst_tests/analysis/Zr2_2/ornl_zr2_2_ad.i)
- (assessment/LWR/validation/LOCA_ANL_cladding_burst_tests/analysis/OCL5_8/OCL5_8_ad.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-12/puzry-12.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-21/puzry-21_aniso.i)
- (test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/ad_zry_clad_failure_plastic_instability.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-17/puzry-17_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-13/puzry-13_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-27/puzry-27.i)
- (assessment/LWR/validation/LOCA_ORNL_cladding_burst_tests/analysis/Zr2_1/ornl_zr2_1_ad.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_02MPa/rebeka_singlerod_2d_02MPa.i)
References
- F. J. Erbacher, H. J. Neitzel, H. Rosinger, H. Schmidt, and K. Wiehr.
Burst criterion of Zircaloy fuel claddings in a loss-of-coolant accident.
In Zirconium in the Nuclear Industry, Fifth Conference, ASTM STP 754, D.G. Franklin Ed., 271–283. American Society for Testing and Materials, 1982.[BibTeX]
@INPROCEEDINGS{erbacher_ea_1982, author = "Erbacher, F. J. and Neitzel, H. J. and Rosinger, H. and Schmidt, H. and Wiehr, K.", title = "Burst criterion of {Z}ircaloy fuel claddings in a loss-of-coolant accident", booktitle = "Zirconium in the Nuclear Industry, Fifth Conference, ASTM STP 754, D.G. Franklin Ed.", organization = "American Society for Testing and Materials", year = "1982", pages = "271-283" } - V. Di Marcello, A. Schubert, J. van de Laar, and P. Van Uffelen.
The TRANSURANUS mechanical model for large strain analysis.
Nuclear Engineering and Design, 276:19–29, 2014.[BibTeX]
@ARTICLE{dimarcello_ea_2014, author = "Marcello, V. Di and Schubert, A. and van de Laar, J. and Uffelen, P. Van", title = "The {TRANSURANUS} mechanical model for large strain analysis", journal = "Nuclear Engineering and Design", year = "2014", volume = "276", pages = "19-29", publisher = "Elsevier" } - D. A. Powers and R. O. Meyer.
Cladding swelling and rupture models for LOCA analysis.
Technical Report NUREG-0630, Nuclear Regulatory Commission, 1980.[BibTeX]
@techreport{powers1980, author = "Powers, D. A. and Meyer, R. O.", title = "Cladding Swelling and Rupture Models for {LOCA} analysis", institution = "Nuclear Regulatory Commission", year = "1980", number = "NUREG-0630" }
(test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_overstress.i)
#--------------------------------------------------------------------------------
#
# This test case is prepared to test the LOCA failure (burst) criterion for Zirconium alloy
# using the ZryCladdingFailure and ZryCreepLOCAUpdate materials.
#
# - Geometry:
# ri = 0.005 m
# ro = 0.0055 m
# H = 0.01 m
#
# - Single element
#
# - Temperature = 1000 K
#
# - Boundary conditions:
# pressure at inner surface (pi) = from 1 to 10 MPa in 10 s
# pressure at outer surface (po) = 0.1 MPa
#
# Cladding failure is considered to occur when a limiting (burst) stress is exceeded
# (criterion = 0, i.e., overstress criterion).
#
# At 1000 K, with Zry in 100% alpha phase and no oxidation considered, the burst stress is
# sigma_burst = 830*exp(-0.001*1000) = 305.34 MPa
# which is calculated correctly by the program.
#
# Failure occurs when the hoop stres reaches the burst stress of 305.34 MPa
#
#--------------------------------------------------------------------------------
[Mesh]
coord_type = RZ
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
xmin = 0.005
xmax = 0.0055
ymin = 0.0
ymax = 0.01
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.
[]
[]
[AuxVariables]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0 10'
y = '1000 1000'
[]
[inner_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 10.0'
[]
[outer_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = 0
add_variables = true
strain = FINITE
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = 0
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = right #3
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = right #3
execute_on = timestep_end
[]
[]
[BCs]
[outersurface]
type = Pressure
boundary = right
variable = disp_x
factor = 1.0e5
function = outer_pressure_function
[]
[innersurface]
type = Pressure
boundary = left
variable = disp_x
factor = 1.0e6
function = inner_pressure_function
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 'top bottom'
value = 0.0
[]
[temp_bc_1]
type = FunctionDirichletBC
variable = temp
boundary = 'left right top bottom'
function = temperature_function
[]
[]
[Materials]
[phase]
type = ZrPhase
block = 0
temperature = temp
numerical_method = 2
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = 0
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = 0
temperature = temp
model_thermal_creep = true
model_irradiation_creep = false
model_primary_creep = false
max_inelastic_increment = 1.e-2
[]
[clad_density]
type = StrainAdjustedDensity
block = 0
strain_free_density = 6500
[]
[thermal]
type = HeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 100.
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = right #3
failure_criterion = overstress
hoop_stress = hoop_stress
temperature = temp
fraction_beta_phase = fract_beta_phase
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 20.0
dtmax = 0.1
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 0.1
[]
[]
[Postprocessors]
[hoop_stress]
type = ElementalVariableValue
elementid = 0
variable = hoop_stress
[]
[betaph_fract]
type = ElementalVariableValue
elementid = 0
variable = fract_beta_phase
[]
[burst_stress]
type = ElementalVariableValue
elementid = 0
variable = burst_stress
[]
[burst]
type = ElementalVariableValue
elementid = 0
variable = burst
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
[Outputs]
exodus = true
perf_graph = true
[console]
type = Console
max_rows = 25
[]
[]
(test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_plastic_instability.i)
#--------------------------------------------------------------------------------
#
# This test case is prepared to test the LOCA failure (burst) criterion for Zirconium alloy
# using the ZryCladdingFailure and ZryCreepLOCAUpdate materials.
#
# - Geometry:
# ri = 0.005 m
# ro = 0.0055 m
# H = 0.01 m
#
# - Single element
#
# - Temperature = 1000 K
#
# - Boundary conditions:
# pressure at inner surface (pi) = from 1 to 10 MPa in 10 s
# pressure at outer surface (po) = 0.1 MPa
#
# Cladding failure is considered to occur when either a limiting creep rate is exceeded
# (criterion = 1, i.e., plastic instability criterion).
#
#
# Failure occurs at the attainment of the limiting creep rate, which is
# lim_creep_rate = 100 h^-1 ~0.0278 s^-1.
#
#--------------------------------------------------------------------------------
[Mesh]
coord_type = RZ
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
xmin = 0.005
xmax = 0.0055
ymin = 0.0
ymax = 0.01
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0 10'
y = '1000 1000'
[]
[inner_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 10.0'
[]
[outer_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = 0
add_variables = true
strain = FINITE
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = right #3
execute_on = timestep_end
[]
[]
[BCs]
[outersurface]
type = Pressure
boundary = right
variable = disp_x
factor = 1.0e5
function = outer_pressure_function
[]
[innersurface]
type = Pressure
boundary = left
variable = disp_x
factor = 1.0e6
function = inner_pressure_function
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 'top bottom'
value = 0.0
[]
[temp_bc_1]
type = FunctionDirichletBC
variable = temp
boundary = 'left right top bottom'
function = temperature_function
[]
[]
[Materials]
[phase]
type = ZrPhase
block = 0
temperature = temp
numerical_method = 2
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = 0
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = 0
temperature = temp
model_thermal_creep = true
model_irradiation_creep = false
model_primary_creep = false
[]
[clad_density]
type = StrainAdjustedDensity
block = 0
strain_free_density = 6500
[]
[thermal]
type = HeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 100.
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = right #3
failure_criterion = plastic_instability
effective_strain_rate_creep = creep_rate
temperature = temp
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 8.9
dt = 0.1
[]
[Postprocessors]
[creep_rate]
type = ElementalVariableValue
elementid = 0
variable = creep_rate
[]
[burst]
type = ElementalVariableValue
elementid = 0
variable = burst
[]
[]
[Outputs]
exodus = true
[console]
type = Console
max_rows = 25
[]
[]
(test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_overstress_plastic_instability.i)
#--------------------------------------------------------------------------------
#
# This test case is prepared to test the LOCA failure (burst) criterion for Zirconium alloy
# using the ZryCladdingFailure and ZryCreepLOCAUpdate materials.
#
# - Geometry:
# ri = 0.005 m
# ro = 0.0055 m
# H = 0.01 m
#
# - Single element
#
# - Temperature = 1000 K
#
# - Boundary conditions:
# pressure at inner surface (pi) = from 1 to 10 MPa in 10 s
# pressure at outer surface (po) = 0.1 MPa
#
# Cladding failure is considered to occur when either a limiting (burst) stress or a limiting creep
# rate is exceeded (criterion = 2, i.e., combined overstress and plastic instability criterion).
#
# The limiting creep rate is 100 h^-1 ~0.0278 s^-1.
# At 1000 K, with Zry in 100% alpha phase and no oxidation considered, the burst stress is
# sigma_burst = 830*exp(-0.001*1000) = 305.34 MPa
# which is calculated correctly by the program.
#
# For this case, failure occurs at the attainment of the limiting creep rate, which is
# lim_creep_rate = 100 h^-1 ~0.0278 s^-1.
#
#--------------------------------------------------------------------------------
[Mesh]
coord_type = RZ
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
xmin = 0.005
xmax = 0.0055
ymin = 0.0
ymax = 0.01
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.
[]
[]
[AuxVariables]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0 10'
y = '1000 1000'
[]
[inner_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 10.0'
[]
[outer_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = 0
add_variables = true
strain = FINITE
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = 0
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = right #3
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = right #3
execute_on = timestep_end
[]
[]
[BCs]
[outersurface]
type = Pressure
boundary = right
variable = disp_x
factor = 1.0e5
function = outer_pressure_function
[]
[innersurface]
type = Pressure
boundary = left
variable = disp_x
factor = 1.0e6
function = inner_pressure_function
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 'top bottom'
value = 0.0
[]
[temp_bc_1]
type = FunctionDirichletBC
variable = temp
boundary = 'left right top bottom'
function = temperature_function
[]
[]
[Materials]
[phase]
type = ZrPhase
block = 0
temperature = temp
numerical_method = 2
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = 0
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = 0
temperature = temp
model_thermal_creep = true
model_irradiation_creep = false
model_primary_creep = false
[]
[clad_density]
type = StrainAdjustedDensity
block = 0
strain_free_density = 6500
[]
[thermal]
type = HeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 100.
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = right #3
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
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 8.9
dt = 0.1
[]
[Postprocessors]
[hoop_stress]
type = ElementalVariableValue
elementid = 0
variable = hoop_stress
[]
[creep_rate]
type = ElementalVariableValue
elementid = 0
variable = creep_rate
[]
[betaph_fract]
type = ElementalVariableValue
elementid = 0
variable = fract_beta_phase
[]
[burst_stress]
type = ElementalVariableValue
elementid = 0
variable = burst_stress
[]
[burst]
type = ElementalVariableValue
elementid = 0
variable = burst
[]
[]
[Outputs]
exodus = true
[console]
type = Console
max_rows = 25
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1.i)
initial_fuel_density = 10452.96
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 295.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 5.0e-6
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[]
[AxialRelocation]
[relocation]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = MASS_FRACTION
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
material_input = fis_gas_released
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period0]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = -200.0
end_time = 172387800.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
start_time = -200.0
end_time = 172387800 # End base irradiation
# end_time = 172489043 # Begin Blowdown
# end_time = 172489661 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '172387800 172388043 172488043 172489043 172489073 172489661'
time_dt = '1.0e04 1.0e04 10.0 5.0 0.5 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_1'
[]
[mass_fraction]
type = LineValueSampler
start_point = '0 0.01124 0'
end_point = '0 0.47524 0'
num_points = 30
sort_by = y
variable = layered_mass_fraction
outputs = 'outfile_mass_1'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
perf_graph = true
[exodus]
type = Exodus
file_base = IFA_650_4_part1_out
execute_on = 'initial timestep_end'
[]
[checkpoint]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_temp_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[]
(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
[]
[]
(test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_rupture_temperature.i)
#--------------------------------------------------------------------------------
#
# This test case is prepared to test the LOCA failure (burst) criterion for Zirconium alloy
# using the ZryCladdingFailure and ZryCreepLOCAUpdate materials.
#
# - Geometry:
# ri = 0.005 m
# ro = 0.0055 m
# H = 0.01 m
#
# - Single element
#
# - Temperature rampes from 300 K to 1000 K in 10 s
#
# - Boundary conditions:
# pressure at inner surface (pi) = 10 MPa
# pressure at outer surface (po) = 0.1 MPa
#
# Cladding failure is considered to occur when a rupture temperature is exceeded
# (criterion = 5, i.e., rupture temperature criterion).
#
# Failure occurs when the temperature exceeds the calculated rupture temperature
# and the simulation is terminated. This occurs at 128 s when the rupture
# temperature is 933.01 K and the prescribed temperature is 940 K.
#
#--------------------------------------------------------------------------------
[Mesh]
coord_type = RZ
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
xmin = 0.005
xmax = 0.0055
ymin = 0.0
ymax = 0.01
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 300.0
[]
[]
[AuxVariables]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[rupture_temperature]
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0 140'
y = '300 1000'
[]
[inner_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '10.0 10.0'
[]
[outer_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = 0
add_variables = true
strain = FINITE
generate_output = 'stress_zz strain_zz'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = 0
[]
[rupture_temperature]
type = MaterialRealAux
variable = rupture_temperature
property = rupture_temperature
boundary = right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = right
execute_on = timestep_end
[]
[]
[BCs]
[outersurface]
type = Pressure
boundary = right
variable = disp_x
factor = 1.0e5
function = outer_pressure_function
[]
[innersurface]
type = Pressure
boundary = left
variable = disp_x
factor = 1.0e6
function = inner_pressure_function
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 'top bottom'
value = 0.0
[]
[temp_bc_1]
type = FunctionDirichletBC
variable = temperature
boundary = 'left right top bottom'
function = temperature_function
[]
[]
[Materials]
[phase]
type = ZrPhase
block = 0
temperature = temperature
numerical_method = 2
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = 0
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = 0
temperature = temperature
model_thermal_creep = true
model_irradiation_creep = false
model_primary_creep = false
max_inelastic_increment = 1.e-2
[]
[clad_density]
type = StrainAdjustedDensity
block = 0
strain_free_density = 6500
[]
[thermal]
type = HeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 100.0
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = right
failure_criterion = rupture_temperature
hoop_stress = stress_zz
hoop_strain = strain_zz
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 140.0
[TimeStepper]
type = ConstantDT
dt = 2
[]
[]
[Postprocessors]
[hoop_stress]
type = ElementExtremeValue
variable = stress_zz
[]
[temperature]
type = NodalExtremeValue
variable = temperature
[]
[rupture_temperature]
type = ElementExtremeValue
variable = rupture_temperature
[]
[burst]
type = ElementExtremeValue
variable = burst
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
[Outputs]
csv = true
[]
(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/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-16/puzry-16.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-16.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 1.234e+07' # Linear increase at 0.1224 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2000.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-16_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_08MPa/rebeka_singlerod_2d_08MPa.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = rebeka_singlerod.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '8.e+06 8.e+06' # 80 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = cladding
add_variables = false
strain = FINITE
decomposition_method = EigenSolution
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz hoop_stress'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = MaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = MaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.
translation = 0.1625
boundary = 4
[]
[no_y_midsection]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 101 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
number_axial_zone = 15
oxide_thickness = scale_thickness
[]
[]
[Materials]
[thermal]
type = ZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = cladding
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = cladding
temperature = temperature
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_loca_creep_begin = 501 # see Erbacher et al., 1982
temperature_standard_thermal_creep_end = 500
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = cladding
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = StrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average temperature of cladding exterior
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
cladding_blocks = cladding
plenum_boundary_name = 4
external_clad_boundary_name = 2
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_08MPa_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-23/puzry-23.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-23.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2500. '
y = '1.e+05 1.e+05 1.0855e+07' # Linear increase at 0.0717 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2500. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-23_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/ad_zry_clad_failure_overstress_plastic_instability.i)
#--------------------------------------------------------------------------------
#
# This test case is prepared to test the LOCA failure (burst) criterion for Zirconium alloy
# using the ZryCladdingFailure and ZryCreepLOCAUpdate materials.
#
# - Geometry:
# ri = 0.005 m
# ro = 0.0055 m
# H = 0.01 m
#
# - Single element
#
# - Temperature = 1000 K
#
# - Boundary conditions:
# pressure at inner surface (pi) = from 1 to 10 MPa in 10 s
# pressure at outer surface (po) = 0.1 MPa
#
# Cladding failure is considered to occur when either a limiting (burst) stress or a limiting creep
# rate is exceeded (criterion = 2, i.e., combined overstress and plastic instability criterion).
#
# The limiting creep rate is 100 h^-1 ~0.0278 s^-1.
# At 1000 K, with Zry in 100% alpha phase and no oxidation considered, the burst stress is
# sigma_burst = 830*exp(-0.001*1000) = 305.34 MPa
# which is calculated correctly by the program.
#
# For this case, failure occurs at the attainment of the limiting creep rate, which is
# lim_creep_rate = 100 h^-1 ~0.0278 s^-1.
#
#--------------------------------------------------------------------------------
[Mesh]
coord_type = RZ
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
xmin = 0.005
xmax = 0.0055
ymin = 0.0
ymax = 0.01
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.
[]
[]
[AuxVariables]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0 10'
y = '1000 1000'
[]
[inner_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 10.0'
[]
[outer_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
use_automatic_differentiation = true
block = 0
add_variables = true
strain = FINITE
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[hoop_stress]
type = ADRankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[fract_bphase]
type = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = 0
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = right #3
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = right #3
execute_on = timestep_end
[]
[]
[BCs]
[outersurface]
type = ADPressure
boundary = right
variable = disp_x
factor = 1.0e5
function = outer_pressure_function
[]
[innersurface]
type = ADPressure
boundary = left
variable = disp_x
factor = 1.0e6
function = inner_pressure_function
[]
[u_bottom_fix]
type = ADDirichletBC
variable = disp_y
boundary = 'top bottom'
value = 0.0
[]
[temp_bc_1]
type = ADFunctionDirichletBC
variable = temp
boundary = 'left right top bottom'
function = temperature_function
[]
[]
[Materials]
[phase]
type = ADZrPhase
block = 0
temperature = temp
numerical_method = 2
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'zry_thermal_creep'
block = 0
[]
[zry_thermal_creep]
type = ADZryCreepLOCAUpdate
block = 0
temperature = temp
model_thermal_creep = true
model_irradiation_creep = false
model_primary_creep = false
[]
[clad_density]
type = ADStrainAdjustedDensity
block = 0
strain_free_density = 6500
[]
[thermal]
type = ADHeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 100.
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = right #3
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
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 8.9
dt = 0.1
[]
[Postprocessors]
[hoop_stress]
type = ElementalVariableValue
elementid = 0
variable = hoop_stress
[]
[creep_rate]
type = ElementalVariableValue
elementid = 0
variable = creep_rate
[]
[betaph_fract]
type = ElementalVariableValue
elementid = 0
variable = fract_beta_phase
[]
[burst_stress]
type = ElementalVariableValue
elementid = 0
variable = burst_stress
[]
[burst]
type = ElementalVariableValue
elementid = 0
variable = burst
[]
[]
[Outputs]
exodus = true
[console]
type = Console
max_rows = 25
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-15/puzry-15.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-15.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 1.183e+07' # Linear increase at 0.1173 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2000.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-15_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1.i)
initial_fuel_density = 10452.96
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 295.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 5.0e-6
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[]
[AxialRelocation]
[relocation]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = MASS_FRACTION
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
material_input = fis_gas_released
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period0]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = -200.0
end_time = 172387800.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
start_time = -200.0
end_time = 172387800 # End base irradiation
# end_time = 172489043 # Begin Blowdown
# end_time = 172489661 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '172387800 172388043 172488043 172489043 172489073 172489661'
time_dt = '1.0e04 1.0e04 10.0 5.0 0.5 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_1'
[]
[mass_fraction]
type = LineValueSampler
start_point = '0 0.01124 0'
end_point = '0 0.47524 0'
num_points = 30
sort_by = y
variable = layered_mass_fraction
outputs = 'outfile_mass_1'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
perf_graph = true
[exodus]
type = Exodus
file_base = IFA_650_4_part1_out
execute_on = 'initial timestep_end'
[]
[checkpoint]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_temp_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-04/puzry-04_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-04.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 7.2e+05' # Linear increase at 0.062 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-04_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_overstress.i)
#--------------------------------------------------------------------------------
#
# This test case is prepared to test the LOCA failure (burst) criterion for Zirconium alloy
# using the ZryCladdingFailure and ZryCreepLOCAUpdate materials.
#
# - Geometry:
# ri = 0.005 m
# ro = 0.0055 m
# H = 0.01 m
#
# - Single element
#
# - Temperature = 1000 K
#
# - Boundary conditions:
# pressure at inner surface (pi) = from 1 to 10 MPa in 10 s
# pressure at outer surface (po) = 0.1 MPa
#
# Cladding failure is considered to occur when a limiting (burst) stress is exceeded
# (criterion = 0, i.e., overstress criterion).
#
# At 1000 K, with Zry in 100% alpha phase and no oxidation considered, the burst stress is
# sigma_burst = 830*exp(-0.001*1000) = 305.34 MPa
# which is calculated correctly by the program.
#
# Failure occurs when the hoop stres reaches the burst stress of 305.34 MPa
#
#--------------------------------------------------------------------------------
[Mesh]
coord_type = RZ
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
xmin = 0.005
xmax = 0.0055
ymin = 0.0
ymax = 0.01
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.
[]
[]
[AuxVariables]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0 10'
y = '1000 1000'
[]
[inner_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 10.0'
[]
[outer_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = 0
add_variables = true
strain = FINITE
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = 0
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = right #3
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = right #3
execute_on = timestep_end
[]
[]
[BCs]
[outersurface]
type = Pressure
boundary = right
variable = disp_x
factor = 1.0e5
function = outer_pressure_function
[]
[innersurface]
type = Pressure
boundary = left
variable = disp_x
factor = 1.0e6
function = inner_pressure_function
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 'top bottom'
value = 0.0
[]
[temp_bc_1]
type = FunctionDirichletBC
variable = temp
boundary = 'left right top bottom'
function = temperature_function
[]
[]
[Materials]
[phase]
type = ZrPhase
block = 0
temperature = temp
numerical_method = 2
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = 0
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = 0
temperature = temp
model_thermal_creep = true
model_irradiation_creep = false
model_primary_creep = false
max_inelastic_increment = 1.e-2
[]
[clad_density]
type = StrainAdjustedDensity
block = 0
strain_free_density = 6500
[]
[thermal]
type = HeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 100.
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = right #3
failure_criterion = overstress
hoop_stress = hoop_stress
temperature = temp
fraction_beta_phase = fract_beta_phase
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 20.0
dtmax = 0.1
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 0.1
[]
[]
[Postprocessors]
[hoop_stress]
type = ElementalVariableValue
elementid = 0
variable = hoop_stress
[]
[betaph_fract]
type = ElementalVariableValue
elementid = 0
variable = fract_beta_phase
[]
[burst_stress]
type = ElementalVariableValue
elementid = 0
variable = burst_stress
[]
[burst]
type = ElementalVariableValue
elementid = 0
variable = burst
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
[Outputs]
exodus = true
perf_graph = true
[console]
type = Console
max_rows = 25
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-05/puzry-05.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-05.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 7.2e+05' # Linear increase at 0.0062 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2000.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-05_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_06MPa/rebeka_singlerod_2d_06MPa.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = rebeka_singlerod.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '6.e+06 6.e+06' # 60 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = cladding
add_variables = false
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'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = MaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = MaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.
translation = 0.1625
boundary = 4
[]
[no_y_midsection]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 101 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
number_axial_zone = 15
oxide_thickness = scale_thickness
[]
[]
[Materials]
[thermal]
type = ZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = cladding
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = cladding
temperature = temperature
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_loca_creep_begin = 501 # see Erbacher et al., 1982
temperature_standard_thermal_creep_end = 500
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = cladding
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = StrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average temperature of cladding exterior
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
cladding_blocks = cladding
plenum_boundary_name = 4
external_clad_boundary_name = 2
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_06MPa_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_ORNL_cladding_burst_tests/analysis/Zr2_1/ornl_zr2_1.i)
# Simulation ORNL burst tests Zr2_1
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = zr2_ornl_burst_test_mesh.e
[]
[]
[Variables]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func] # only 10 inches of the rod are within the heated zone (cf. Terrani email)
type = PiecewiseBilinear
data_file = temperature_ornl_zr2_1.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
data_file = pressure_inner_ornl_zr2_1.csv
scale_factor = 1.e+06
format = columns
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 400. '
y = '0.1 0.1 ' # atmospheric pressure
scale_factor = 1.e+06
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = cladding
add_variables = true
strain = FINITE
decomposition_method = EigenSolution
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz hoop_stress'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = MaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = MaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 4'
preset = false
[]
[no_y_top]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
preset = false
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[mid_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 2 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
type = ZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = cladding
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = cladding
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
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = cladding
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = StrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.004875
clad_outer_radius = 0.005580
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
#use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 400.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[pressure_inner]
type = FunctionValuePostprocessor
function = inner_pressure_func
execute_on = 'initial timestep_end'
[]
[pressure_outer]
type = FunctionValuePostprocessor
function = outer_pressure_func
execute_on = 'initial timestep_end'
[]
[ave_clad_temp]
type = SideAverageValue
boundary = 2
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
execute_on = 'initial timestep_end'
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
execute_on = 'initial timestep_end'
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
execute_on = 'initial timestep_end'
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
execute_on = 'initial timestep_end'
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
execute_on = 'initial timestep_end'
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
execute_on = 'initial timestep_end'
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
execute_on = 'initial timestep_end'
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[mid_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 22
[]
[stress_xx_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_xx
elementid = 19
[]
[stress_yy_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_yy
elementid = 19
[]
[stress_zz_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_zz
elementid = 19
[]
[strain_zz_midplane] # strain in the mid Element
type = ElementalVariableValue
variable = strain_zz
elementid = 19
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
plenum_boundary_name = 4
cladding_blocks = cladding
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
perf_graph = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 20
[]
[chkfile]
type = CSV
file_base = ornl_zr2_1_chkfile
show = 'pressure_inner max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-31/puzry-31_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-31.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1400. '
y = '1.e+05 1.e+05 7.944e+06' # Linear increase at 0.1961 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1400. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-07
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-31_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-02/puzry-02.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-02.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 7.5e+05' # Linear increase at 0.0065 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2000.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-02_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/ad_zry_clad_failure_overstrain.i)
#--------------------------------------------------------------------------------
#
# This test case is prepared to test the LOCA failure (burst) criterion for Zirconium alloy
# using the ZryCladdingFailure and ZryCreepLOCAUpdate materials.
#
# - Geometry:
# ri = 0.005 m
# ro = 0.0055 m
# H = 0.01 m
#
# - Single element
#
# - Temperature = 1000 K
#
# - Boundary conditions:
# pressure at inner surface (pi) = from 1 to 10 MPa in 10 s
# pressure at outer surface (po) = 0.1 MPa
#
# Cladding failure is considered to occur when the overstrain criterion
# is achieved (criterion = 3).
#
# The limiting true creep hoop strain is 33.6%
#
#--------------------------------------------------------------------------------
[Mesh]
coord_type = RZ
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
xmin = 0.005
xmax = 0.0055
ymin = 0.0
ymax = 0.01
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.
[]
[]
[AuxVariables]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
initial_condition = .334
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0 10'
y = '1000 1000'
[]
[inner_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 10.0'
[]
[outer_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
use_automatic_differentiation = true
block = 0
add_variables = true
strain = FINITE
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[hoop_creep_strain]
type = FunctionAux
variable = hoop_creep_strain
function = '.334+t'
[]
# NOTE: a function corresponding to the strain is applied to test the failure
# model. In reality, one would couple the displacements and the calculated
# strain as shown, but has been commented out.
# [hoop_creep_strain]
# type = RankTwoScalarAux
# rank_two_tensor = creep_strain
# variable = hoop_creep_strain
# scalar_type = HoopStress
# execute_on = timestep_end
# []
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = right #3
execute_on = timestep_end
[]
[]
[BCs]
[outersurface]
type = ADPressure
boundary = right
variable = disp_x
factor = 1.0e5
function = outer_pressure_function
[]
[innersurface]
type = ADPressure
boundary = left
variable = disp_x
factor = 1.0e6
function = inner_pressure_function
[]
[u_bottom_fix]
type = ADDirichletBC
variable = disp_y
boundary = 'top bottom'
value = 0.0
[]
[temp_bc_1]
type = ADFunctionDirichletBC
variable = temp
boundary = 'left right top bottom'
function = temperature_function
[]
[]
[Materials]
[phase]
type = ADZrPhase
block = 0
temperature = temp
numerical_method = 2
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'zry_thermal_creep'
block = 0
[]
[zry_thermal_creep]
type = ADZryCreepLOCAUpdate
block = 0
temperature = temp
model_thermal_creep = true
model_irradiation_creep = false
model_primary_creep = false
[]
[clad_density]
type = ADStrainAdjustedDensity
block = 0
strain_free_density = 6500
[]
[thermal]
type = ADHeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 100.
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = right #3
failure_criterion = overstrain
hoop_creep_strain = hoop_creep_strain
temperature = temp
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 0.003
dt = 0.001
[]
[Postprocessors]
[hoop_creep_strain]
type = ElementalVariableValue
elementid = 0
variable = hoop_creep_strain
[]
[burst]
type = ElementalVariableValue
elementid = 0
variable = burst
[]
[]
[Outputs]
exodus = true
[console]
type = Console
max_rows = 25
[]
[]
(test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/ad_zry_clad_failure_overstress.i)
#--------------------------------------------------------------------------------
#
# This test case is prepared to test the LOCA failure (burst) criterion for Zirconium alloy
# using the ZryCladdingFailure and ZryCreepLOCAUpdate materials.
#
# - Geometry:
# ri = 0.005 m
# ro = 0.0055 m
# H = 0.01 m
#
# - Single element
#
# - Temperature = 1000 K
#
# - Boundary conditions:
# pressure at inner surface (pi) = from 1 to 10 MPa in 10 s
# pressure at outer surface (po) = 0.1 MPa
#
# Cladding failure is considered to occur when a limiting (burst) stress is exceeded
# (criterion = 0, i.e., overstress criterion).
#
# At 1000 K, with Zry in 100% alpha phase and no oxidation considered, the burst stress is
# sigma_burst = 830*exp(-0.001*1000) = 305.34 MPa
# which is calculated correctly by the program.
#
# Failure occurs when the hoop stres reaches the burst stress of 305.34 MPa
#
#--------------------------------------------------------------------------------
[Mesh]
coord_type = RZ
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
xmin = 0.005
xmax = 0.0055
ymin = 0.0
ymax = 0.01
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.
[]
[]
[AuxVariables]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0 10'
y = '1000 1000'
[]
[inner_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 10.0'
[]
[outer_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
use_automatic_differentiation = true
block = 0
add_variables = true
strain = FINITE
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[hoop_stress]
type = ADRankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[fract_bphase]
type = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = 0
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = right #3
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = right #3
execute_on = timestep_end
[]
[]
[BCs]
[outersurface]
type = ADPressure
boundary = right
variable = disp_x
factor = 1.0e5
function = outer_pressure_function
[]
[innersurface]
type = ADPressure
boundary = left
variable = disp_x
factor = 1.0e6
function = inner_pressure_function
[]
[u_bottom_fix]
type = ADDirichletBC
variable = disp_y
boundary = 'top bottom'
value = 0.0
[]
[temp_bc_1]
type = ADFunctionDirichletBC
variable = temp
boundary = 'left right top bottom'
function = temperature_function
[]
[]
[Materials]
[phase]
type = ADZrPhase
block = 0
temperature = temp
numerical_method = 2
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'zry_thermal_creep'
block = 0
[]
[zry_thermal_creep]
type = ADZryCreepLOCAUpdate
block = 0
temperature = temp
model_thermal_creep = true
model_irradiation_creep = false
model_primary_creep = false
max_inelastic_increment = 1.e-2
[]
[clad_density]
type = ADStrainAdjustedDensity
block = 0
strain_free_density = 6500
[]
[thermal]
type = ADHeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 100.
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = right #3
failure_criterion = overstress
hoop_stress = hoop_stress
temperature = temp
fraction_beta_phase = fract_beta_phase
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 20.0
dtmax = 0.1
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 0.1
[]
[]
[Postprocessors]
[hoop_stress]
type = ElementalVariableValue
elementid = 0
variable = hoop_stress
[]
[betaph_fract]
type = ElementalVariableValue
elementid = 0
variable = fract_beta_phase
[]
[burst_stress]
type = ElementalVariableValue
elementid = 0
variable = burst_stress
[]
[burst]
type = ElementalVariableValue
elementid = 0
variable = burst
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
[Outputs]
exodus = true
perf_graph = true
[console]
type = Console
max_rows = 25
[]
[]
(assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_06MPa/rebeka_singlerod_2d_06MPa_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = rebeka_singlerod.e
[]
[]
[Variables]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '6.e+06 6.e+06' # 10 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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]
[clad]
block = cladding
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'
use_automatic_differentiation = true
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.
translation = 0.1625
boundary = 4
[]
[no_y_midsection]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 101 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
oxide_thickness = scale_thickness
number_axial_zone = 15
use_ad = true
[]
[]
[Materials]
[converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[thermal]
type = ADZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = cladding
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[clad_zrycreep]
type = ADZryAnisoCreepLOCAUpdate
block = cladding
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 = cladding
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = ADStrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ADZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-06
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp]
type = SideAverageValue
boundary = 2
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[top_disp_r_clad] # this is mid height
type = NodalVariableValue
variable = disp_x
nodeid = 0 #coords (0.005375, 0.1625)
[]
[top_disp_r_clad_slice] # this is mid height matched to the 1.5d
type = NodalVariableValue
variable = disp_x
nodeid = 3 #coords (0.005375, 0.1625)
[]
[top_disp_z_clad]
type = NodalVariableValue
variable = disp_y
nodeid = 0 #coords (0.005375, 0.1625)
[]
[stress_xx] # stess in the top Element
type = ElementalVariableValue
variable = stress_xx
elementid = 0
[]
[stress_yy] # stess in the top Element
type = ElementalVariableValue
variable = stress_yy
elementid = 0
[]
[stress_zz] # stess in the top Element
type = ElementalVariableValue
variable = stress_zz
elementid = 0
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
cladding_blocks = cladding
plenum_boundary_name = 4
external_clad_boundary_name = 2
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_06MPa_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_01MPa/rebeka_singlerod_2d_01MPa.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = rebeka_singlerod.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+06 1.e+06' # 10 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = cladding
add_variables = false
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'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = MaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = MaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.
translation = 0.1625
boundary = 4
[]
[no_y_midsection]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 101 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02
number_axial_zone = 15
oxide_thickness = scale_thickness
[]
[]
[Materials]
[thermal]
type = ZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = cladding
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = cladding
temperature = temperature
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_loca_creep_begin = 501 # see Erbacher et al., 1982
temperature_standard_thermal_creep_end = 500
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = cladding
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = StrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average temperature of cladding exterior
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
cladding_blocks = cladding
plenum_boundary_name = 4
external_clad_boundary_name = 2
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_01MPa_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
(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_PUZRY_cladding_burst_tests/analysis/puzry-22/puzry-22_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-22.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 6000. '
y = '1.e+05 1.e+05 7.5e+06' # Linear increase at 0.0148 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 6000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-07
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-22_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(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
[]
[]
(test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/ad_zry_clad_failure_overstress_overstrain.i)
#--------------------------------------------------------------------------------
#
# This test case is prepared to test the LOCA failure (burst) criterion for Zirconium alloy
# using the ZryCladdingFailure and ZryCreepLOCAUpdate materials.
#
# - Geometry:
# ri = 0.005 m
# ro = 0.0055 m
# H = 0.01 m
#
# - Single element
#
# - Temperature = 1000 K
#
# - Boundary conditions:
# pressure at inner surface (pi) = from 1 to 10 MPa in 10 s
# pressure at outer surface (po) = 0.1 MPa
#
# Cladding failure is considered to occur when either a limiting (burst) stress or a limiting
# hoop strain is exceeded (criterion = 4, i.e., combined overstress and overstrain criterion).
#
# At 1000 K, with Zry in 100% alpha phase and no oxidation considered, the burst stress is
# sigma_burst = 830*exp(-0.001*1000) = 305.34 MPa
# which is calculated correctly by the program.
#
# The limiting true creep hoop strain is 33.6%
#
# For this case, failure occurs at the attainment of the limiting strain.
#
#--------------------------------------------------------------------------------
[Mesh]
coord_type = RZ
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
xmin = 0.005
xmax = 0.0055
ymin = 0.0
ymax = 0.01
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.
[]
[]
[AuxVariables]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
initial_condition = .334
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0 10'
y = '1000 1000'
[]
[inner_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 10.0'
[]
[outer_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
use_automatic_differentiation = true
block = 0
add_variables = true
strain = FINITE
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[hoop_stress]
type = ADRankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[hoop_creep_strain]
type = FunctionAux
variable = hoop_creep_strain
function = '.334+t'
[]
# NOTE: a function corresponding to the strain is applied to test the failure
# model. In reality, one would couple the displacements and the calculated
# strain as shown, but has been commented out.
# [hoop_creep_strain]
# type = RankTwoScalarAux
# rank_two_tensor = creep_strain
# variable = hoop_creep_strain
# scalar_type = HoopStress
# execute_on = timestep_end
# []
[fract_bphase]
type = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = 0
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = right #3
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = right #3
execute_on = timestep_end
[]
[]
[BCs]
[outersurface]
type = ADPressure
boundary = right
variable = disp_x
factor = 1.0e5
function = outer_pressure_function
[]
[innersurface]
type = ADPressure
boundary = left
variable = disp_x
factor = 1.0e6
function = inner_pressure_function
[]
[u_bottom_fix]
type = ADDirichletBC
variable = disp_y
boundary = 'top bottom'
value = 0.0
[]
[temp_bc_1]
type = ADFunctionDirichletBC
variable = temp
boundary = 'left right top bottom'
function = temperature_function
[]
[]
[Materials]
[phase]
type = ADZrPhase
block = 0
temperature = temp
numerical_method = 2
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'zry_thermal_creep'
block = 0
[]
[zry_thermal_creep]
type = ADZryCreepLOCAUpdate
block = 0
temperature = temp
model_thermal_creep = true
model_irradiation_creep = false
model_primary_creep = false
[]
[clad_density]
type = ADStrainAdjustedDensity
block = 0
strain_free_density = 6500
[]
[thermal]
type = ADHeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 100.
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = right #3
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = hoop_creep_strain
temperature = temp
fraction_beta_phase = fract_beta_phase
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 0.003
dt = 0.001
[]
[Postprocessors]
[hoop_stress]
type = ElementalVariableValue
elementid = 0
variable = hoop_stress
[]
[hoop_creep_strain]
type = ElementalVariableValue
elementid = 0
variable = hoop_creep_strain
[]
[betaph_fract]
type = ElementalVariableValue
elementid = 0
variable = fract_beta_phase
[]
[burst_stress]
type = ElementalVariableValue
elementid = 0
variable = burst_stress
[]
[burst]
type = ElementalVariableValue
elementid = 0
variable = burst
[]
[]
[Outputs]
exodus = true
[console]
type = Console
max_rows = 25
[]
[]
(assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_10MPa/rebeka_singlerod_2d_10MPa_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = rebeka_singlerod.e
[]
[]
[Variables]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+07 1.e+07' # 100 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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]
[clad]
block = cladding
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'
use_automatic_differentiation = true
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.
translation = 0.1625
boundary = 4
[]
[no_y_midsection]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 101 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
oxide_thickness = scale_thickness
use_ad = true
[]
[]
[Materials]
[thermal]
type = ADZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ADZryElasticityTensor
block = cladding
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[clad_zrycreep]
type = ADZryAnisoCreepLOCAUpdate
block = cladding
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 = 'fract_beta_phase'
[]
[thermal_expansion]
type = ADZryThermalExpansionMATPROEigenstrain
block = cladding
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = ADStrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ADZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ADZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ADZryCladdingFailure
boundary = 2
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
solve_type = NEWTON
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.e-06
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp]
type = SideAverageValue
boundary = 2
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[top_disp_r_clad] # this is mid height
type = NodalVariableValue
variable = disp_x
nodeid = 0 #coords (0.005375, 0.1625)
[]
[top_disp_r_clad_slice] # this is mid height matched to the 1.5d
type = NodalVariableValue
variable = disp_x
nodeid = 3 #coords (0.005375, 0.1625)
[]
[top_disp_z_clad]
type = NodalVariableValue
variable = disp_y
nodeid = 0 #coords (0.005375, 0.1625)
[]
[stress_xx] # stess in the top Element
type = ElementalVariableValue
variable = stress_xx
elementid = 0
[]
[stress_yy] # stess in the top Element
type = ElementalVariableValue
variable = stress_yy
elementid = 0
[]
[stress_zz] # stess in the top Element
type = ElementalVariableValue
variable = stress_zz
elementid = 0
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
cladding_blocks = cladding
plenum_boundary_name = 4
external_clad_boundary_name = 2
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_10MPa_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_10/IFA_650_10_part1.i)
# Halden test IFA-650.10
initial_fuel_density = 10447
[GlobalParams]
density = ${initial_fuel_density}. # 95.32% of 10960
displacements = 'disp_x disp_y'
temperature = temp
order = FIRST
family = LAGRANGE
energy_per_fission = 3.28451e-11 # J/fission
volumetric_locking_correction = true
[]
[Mesh]
coord_type = RZ
patch_size = 5 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = mesh_ifa65010.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.
[]
[]
[Functions]
[linear_heat_rate]
type = PiecewiseLinear
data_file = lhr_average.csv
scale_factor = 1.e+03
format = columns
[]
[axial_power_peaking_factors]
type = PiecewiseBilinear
data_file = lhr_peaking_factors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[rod_outer_pressure]
type = PiecewiseLinear
data_file = rod_outer_pressure.csv
scale_factor = 1.e+06
format = columns
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = temp_outer_clad.csv
scale_factor = 1.
axis = 1 # (0,1,2) => (x,y,z)
[]
[q] # same as linear_heat_rate for the base irradiation
type = PiecewiseLinear
data_file = lhr_average.csv
scale_factor = 1.e+03
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heat_sink_temperature.csv
scale_factor = 1.
axis = 1 # (0,1,2) => (x,y,z)
[]
[average_coolant_htc]
type = PiecewiseLinear
data_file = htc_average.csv
scale_factor = 1.
format = columns
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '0 125690842. 125691189.5'
y = '9 9 8 '
direction = 'right'
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
format = columns
[]
[]
[AuxVariables]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
initial_condition = 4.65e-06
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_hflux]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[hmode]
order = CONSTANT
family = MONOMIAL
[]
[htype]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[thcond]
type = MaterialRealAux
property = thermal_conductivity
variable = thermal_conductivity
block = pellet_type_1
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxi_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
execute_on = 'initial linear'
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[coolant_hflux]
type = MaterialRealAux
property = output_heat_flux
variable = coolant_hflux
boundary = 2
execute_on = 'initial linear'
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
execute_on = 'initial linear'
[]
[hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = hmode
boundary = 2
execute_on = 'initial linear'
[]
[htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = htype
boundary = 2
execute_on = 'initial linear'
[]
[pelletid]
type = PelletIdAux
block = pellet_type_1
variable = pellet_id
a_lower = 8.5e-03
a_upper = 448.5e-03
number_pellets = 44
execute_on = initial
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_eigenstrain
fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
[]
[clad]
block = clad
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = pellet_type_1
fission_rate = fission_rate
[]
[]
[Burnup]
[burnup]
order = CONSTANT
family = MONOMIAL
block = pellet_type_1
rod_ave_lin_pow = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
num_radial = 50
bias = 0.95
num_axial = 20
a_lower = 8.5e-03
a_upper = 448.5e-03
fuel_inner_radius = 0.
fuel_outer_radius = 4.105e-03
fuel_volume_ratio = 1.
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.04487 0.95513 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1.e+07
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
quadrature = true
normal_smoothing_distance = 0.1
roughness_secondary = 1.8e-07
roughness_primary = 2.e-06
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 124861061.
refab_type = 0
[]
[]
#TODO: Add option in StandardLWRFuelRodOutputs to compute plenum temperature this way.
# 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
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_outer_temperature
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
function = rod_outer_pressure
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.6e+06
startup_time = 0.
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
refab_time = 124861061.
refab_pressure = 4.e+06
refab_temperature = 293.15
refab_volume = 1.7e-05
[]
[]
[]
[Controls]
[period0]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = 0.
end_time = 124861061.0
[]
#[period1]
# type = TimePeriod
# disable_objects = 'BCs/clad_outer_temp'
# start_time = 125690771.0
# end_time = 125691189.5
#[]
[]
[CoolantChannel]
[convective_clad_surface] # PWR conditions (ignored after base irradiation)
boundary = '1 2 3'
variable = temp
heat_transfer_mode = heat_transfer_mode # prescribe htc until end of blowdown. Then use radiative (+ convective prescribed)
heat_transfer_coefficient = average_coolant_htc # For base irradiation, using averge htc from a previous simulation. Afterwards, use constant values (from jernkvist) plus radiation from end of blowdown
effective_emissivity = 0.6 # 0.75 # cf. Jernkvist
inlet_temperature = heat_sink_temperature # K
#inlet_pressure = 15.5e+06 # Pa
#inlet_massflux = 3800. # kg/m^2-s
rod_diameter = 9.5e-03 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
compute_enthalpy = false #true
#oxide_thickness = oxide_thickness
#heat_transfer_mode = 1 # Natural convection
#htc_correlation_type = 2 # Jens-Lottes (recommended for Halden HBWR)
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.0468
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = pellet_type_1
fragmentation_model = BARANI
rod_ave_lin_pow = linear_heat_rate
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
block = pellet_type_1
inelastic_models = 'fuel_creep'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup_function = burnup
initial_porosity = 0.0468
initial_fuel_density = 10447.
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet_type_1
temperature = temp
fission_rate = fission_rate
#burnup_function = burnup #TODO For consistency, we should specify burnup_function rather than fission_rate,
#but keeping it this way to match the SM model
initial_grain_radius = 4.65e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
diameter = 8.21e-03
rod_ave_lin_pow = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
diametral_gap =150.e-06
burnup_relocation_stop = 1.e+20
eigenstrain_name = fuel_relocation_eigenstrain
relocation_activation1 = 19685.039
[]
[fission_gas]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
initial_porosity = 0.0468
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING_BURNUP
pellet_id = pellet_id
pellet_brittle_zone = pbz
ath_model = true
rod_ave_lin_pow = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.
specific_heat = 330.
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 300.0 #TODO: It is odd to have different values for fuel and clad, but keeping this way to match SM
eigenstrain_name = clad_thermal_strain
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 1.e+11
poissons_ratio = 0.3
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
#TODO: The parameters below really should be provided, but they weren't specified in the SM model.
# They may have not been included because irradiation creep wasn't modeled. However, they are used in the thermal
# creep model as well.
# fast_neutron_flux = fast_neutron_flux
# fast_neutron_fluence = fast_neutron_fluence
[]
[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 = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temp
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
#eff_strain_rate_plast =
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temp
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1.e-05
variable = disp_x
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_tol = 1.e-02 # <--- l_tol is ignored when EW is used.
#l_tol = 8.e-03
line_search = 'none'
l_max_its = 200
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-10
start_time = 0.
n_startup_steps = 1
#end_time = 124861061. # End of base irradiation
end_time = 125690771. # Blowdown. End prescribing clad outer temperature.
#end_time = 125690842. # End of blowdown
#end_time = 125691189.5
dtmax = 5.e+05
dtmin = 0.00000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = timestep_material
dt = 1.e+02
#growth_factor = 1.1
#optimal_iterations = 4
#iteration_window = 2
timestep_limiting_function = forced_times #linear_heat_rate
max_function_change = 2000.
force_step_every_function_point = true
time_t = '121509219. 124861061. 125680151. 125690151. 125690771. 125691027. 125691033.'
time_dt = '5.e+05 1.e+04 1.e+04 10. 5. 0.5 5. '
[]
[]
[UserObjects]
[pbz]
type = PelletBrittleZone
block = pellet_type_1
pellet_id = pellet_id
temperature = temp
a_lower = 8.5e-03
a_upper = 448.5e-03
pellet_radius = 4.105e-03
number_pellets = 44
execute_on = 'initial linear'
[]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = true
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = linear_heat_rate
execute_on = 'initial timestep_end'
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[oxygen_fract_max]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfract_total
execute_on = 'initial timestep_end'
[]
[oxygen_fgain_max]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfgain_total
execute_on = 'initial timestep_end'
[]
[creep_rate_max]
type = ElementExtremeValue
value_type = max
variable = creep_rate
block = clad
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
[]
[strain_clad_hoop_max]
type = ElementExtremeValue
value_type = max
variable = hoop_strain
block = clad
[]
[stress_clad_hoop_max]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_midplane]
type = NodalVariableValue
nodeid = 676 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_tclow]
type = NodalVariableValue
nodeid = 826 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_tchigh]
type = NodalVariableValue
nodeid = 511 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_plenum_mid]
type = NodalVariableValue
nodeid = 241 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_inner_midplane]
type = NodalVariableValue
nodeid = 679 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_max]
type = NodalExtremeValue
boundary = '1 2 3'
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_ave]
type = SideAverageValue
boundary = 2
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_fuel_central]
type = NodalVariableValue
variable = temp
nodeid = 1569 # !! Mesh dependent
execute_on = 'initial timestep_end'
[]
[temp_fuel_outer_max]
type = NodalExtremeValue
boundary = 10
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[strain_clad_hoop_outer_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = hoop_strain
execute_on = 'initial timestep_end'
[]
[stress_clad_hoop_outer_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = hoop_stress
execute_on = 'initial timestep_end'
[]
[contact_pressure_midplane]
type = ElementalVariableValue
elementid = 1300 # !! Mesh dependent
variable = contact_pressure
execute_on = 'initial timestep_end'
[]
[oxide_thickness_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = oxide_thickness
execute_on = 'initial timestep_end'
[]
[gap_conductance_average]
type = SideAverageValue
boundary = 10
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[coolant_htc_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = coolant_htc
execute_on = 'initial timestep_end'
[]
[coolant_htc_average]
type = SideAverageValue
boundary = 2
variable = coolant_htc
execute_on = 'initial timestep_end'
[]
[coolant_hflux_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = coolant_hflux
execute_on = 'initial timestep_end'
[]
[coolant_hflux_average]
type = SideAverageValue
boundary = 2
variable = coolant_hflux
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = hoop_strain
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
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'outfile_temp_1'
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet_type_1
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
[console]
type = Console
output_linear = true
max_rows = 10
[]
[checkpoint]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_1]
type = CSV
execute_on = 'FINAL'
[]
[outfile_temp_1]
type = CSV
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_3d_10MPa_01Kpers_90deg/rebeka_singlerod_3d_10MPa_90deg.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
order = SECOND
family = LAGRANGE
[]
[Problem]
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = 3d_rebeka_singlerod.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+07 1.e+07' # 100 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = cladding
add_variables = false
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'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
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] # Total oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = MaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = MaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
translation = 0.1625
vary_azimuthally = true
azimuthal_variation_pi2 = -30.
minimum_temperature = 573.0
boundary = 4
[]
[no_y_midsection]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[no_z_frontside]
type = DirichletBC
variable = disp_z
boundary = 5
value = 0.
[]
[no_x_backside]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
number_axial_zone = 15
oxide_thickness = scale_thickness
[]
[]
[Materials]
[thermal]
type = ZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = cladding
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = cladding
temperature = temperature
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_loca_creep_begin = 501 # see Erbacher et al., 1982
temperature_standard_thermal_creep_end = 500
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = cladding
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = StrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp]
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
cladding_blocks = cladding
plenum_boundary_name = 4
external_clad_boundary_name = 2
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_singlerod_3d_10MPa_90deg_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
(test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_overstress_plastic_instability.i)
#--------------------------------------------------------------------------------
#
# This test case is prepared to test the LOCA failure (burst) criterion for Zirconium alloy
# using the ZryCladdingFailure and ZryCreepLOCAUpdate materials.
#
# - Geometry:
# ri = 0.005 m
# ro = 0.0055 m
# H = 0.01 m
#
# - Single element
#
# - Temperature = 1000 K
#
# - Boundary conditions:
# pressure at inner surface (pi) = from 1 to 10 MPa in 10 s
# pressure at outer surface (po) = 0.1 MPa
#
# Cladding failure is considered to occur when either a limiting (burst) stress or a limiting creep
# rate is exceeded (criterion = 2, i.e., combined overstress and plastic instability criterion).
#
# The limiting creep rate is 100 h^-1 ~0.0278 s^-1.
# At 1000 K, with Zry in 100% alpha phase and no oxidation considered, the burst stress is
# sigma_burst = 830*exp(-0.001*1000) = 305.34 MPa
# which is calculated correctly by the program.
#
# For this case, failure occurs at the attainment of the limiting creep rate, which is
# lim_creep_rate = 100 h^-1 ~0.0278 s^-1.
#
#--------------------------------------------------------------------------------
[Mesh]
coord_type = RZ
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
xmin = 0.005
xmax = 0.0055
ymin = 0.0
ymax = 0.01
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.
[]
[]
[AuxVariables]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0 10'
y = '1000 1000'
[]
[inner_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 10.0'
[]
[outer_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = 0
add_variables = true
strain = FINITE
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = 0
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = right #3
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = right #3
execute_on = timestep_end
[]
[]
[BCs]
[outersurface]
type = Pressure
boundary = right
variable = disp_x
factor = 1.0e5
function = outer_pressure_function
[]
[innersurface]
type = Pressure
boundary = left
variable = disp_x
factor = 1.0e6
function = inner_pressure_function
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 'top bottom'
value = 0.0
[]
[temp_bc_1]
type = FunctionDirichletBC
variable = temp
boundary = 'left right top bottom'
function = temperature_function
[]
[]
[Materials]
[phase]
type = ZrPhase
block = 0
temperature = temp
numerical_method = 2
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = 0
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = 0
temperature = temp
model_thermal_creep = true
model_irradiation_creep = false
model_primary_creep = false
[]
[clad_density]
type = StrainAdjustedDensity
block = 0
strain_free_density = 6500
[]
[thermal]
type = HeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 100.
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = right #3
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
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 8.9
dt = 0.1
[]
[Postprocessors]
[hoop_stress]
type = ElementalVariableValue
elementid = 0
variable = hoop_stress
[]
[creep_rate]
type = ElementalVariableValue
elementid = 0
variable = creep_rate
[]
[betaph_fract]
type = ElementalVariableValue
elementid = 0
variable = fract_beta_phase
[]
[burst_stress]
type = ElementalVariableValue
elementid = 0
variable = burst_stress
[]
[burst]
type = ElementalVariableValue
elementid = 0
variable = burst
[]
[]
[Outputs]
exodus = true
[console]
type = Console
max_rows = 25
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-08/puzry-08.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-08.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1200. '
y = '1.e+05 1.e+05 1.626e+06' # Linear increase at 0.0763 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1200. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 1200.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-08_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-19/puzry-19_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-19.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 2.53e+06' # Linear increase at 0.0243 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-19_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_10MPa/rebeka_singlerod_2d_10MPa_1pt5.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_mesh_density = customize
include_fuel = false
include_clad = true
include_plenum = false
pellet_outer_radius = 0.00465
clad_gap_width = 0
clad_thickness = 0.000725
fuel_height = 0.1625
slices_per_block = 10
pellet_bottom_coor = 0.0
nx_c = 1
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
include_fuel = false
mesh_generator = layered1D_mesh
[]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
[Variables]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+07 1.e+07' # 100 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = inner_pressure_func
coolant_pressure = outer_pressure_func
coolant_pressure_scaling_factor = 1
fuel_pin_geometry = pin_geometry
[]
[]
[Physics/SolidMechanics/Layered1D]
[clad]
block = clad
add_variables = true
strain = FINITE
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
decomposition_method = EigenSolution
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain'
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'
group_scalar_vars_in_reference_residual = false
mesh_generator = layered1D_mesh
[]
[]
[AuxVariables]
[disp_y] ## Required for easier visualization in Paraview
[]
[disp_z] ## Required for easier visualization in Paraview
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate_aux]
type = MaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = MaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = MaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.0
translation = 0.1625
boundary = 5
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 5
function = inner_pressure_func
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1. # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
oxide_thickness = scale_thickness
[]
[]
[Materials]
[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
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = clad
[]
[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 = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-06
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = temperature
fuel_pin_geometry = pin_geometry
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[min_clad_temp]
type = NodalExtremeValue
block = clad
value_type = min
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_creep_rate]
type = ElementExtremeValue
block = clad
value_type = max
variable = creep_rate_aux
[]
[max_eff_creep_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = effective_creep_strain
[]
[max_hoop_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = strain_zz
[]
[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 = pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[top_disp_r_clad_slice] # this is mid height
type = NodalVariableValue
variable = disp_x
nodeid = 28 # 1 line element
[]
[inner_pressure_func]
type = FunctionValuePostprocessor
function = inner_pressure_func
execute_on = 'initial linear'
[]
[stress_xx] # stess in the top Element
type = ElementalVariableValue
variable = stress_xx
elementid = 9 #single line element
[]
[stress_yy] # stess in the top Element
type = ElementalVariableValue
variable = stress_yy
elementid = 9 #single line element
[]
[stress_zz] # stess in the top Element
type = ElementalVariableValue
variable = stress_zz
elementid = 9 #single line element
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_10MPa_1pt5_out_chkfile
show = 'ave_clad_exterior_temp max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_ORNL_cladding_burst_tests/analysis/Zr2_2/ornl_zr2_2_aniso.i)
# Simulation ORNL burst tests Zr2_2
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = zr2_ornl_burst_test_mesh.e
[]
[]
[Variables]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func] # only 10 inches of the rod are within the heated zone (cf. Terrani email)
type = PiecewiseBilinear
data_file = temperature_ornl_zr2_2.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
data_file = pressure_inner_ornl_zr2_2.csv
scale_factor = 1.e+06
format = columns
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '0.1 0.1 ' # atmospheric pressure
scale_factor = 1.e+06
[]
# 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]
[clad]
use_automatic_differentiation = true
block = cladding
add_variables = true
strain = FINITE
decomposition_method = TaylorExpansion
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz hoop_stress'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 4'
preset = false
[]
[no_y_top]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
preset = false
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[mid_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 2 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
type = ADZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ADZryElasticityTensor
block = cladding
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[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 = cladding
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 = cladding
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = ADStrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[phase_converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[oxidation]
type = ADZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.004875
clad_outer_radius = 0.005580
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
#use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[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 = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 2.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 2.
[]
[]
[Postprocessors]
[pressure_inner]
type = FunctionValuePostprocessor
function = inner_pressure_func
execute_on = 'initial timestep_end'
[]
[pressure_outer]
type = FunctionValuePostprocessor
function = outer_pressure_func
execute_on = 'initial timestep_end'
[]
[ave_clad_temp]
type = SideAverageValue
boundary = 2
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
execute_on = 'initial timestep_end'
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
execute_on = 'initial timestep_end'
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
execute_on = 'initial timestep_end'
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
execute_on = 'initial timestep_end'
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
execute_on = 'initial timestep_end'
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
execute_on = 'initial timestep_end'
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
execute_on = 'initial timestep_end'
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[mid_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 22
[]
[stress_xx_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_xx
elementid = 19
[]
[stress_yy_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_yy
elementid = 19
[]
[stress_zz_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_zz
elementid = 19
[]
[strain_zz_midplane] # strain in the mid Element
type = ElementalVariableValue
variable = strain_zz
elementid = 19
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
plenum_boundary_name = 4
cladding_blocks = cladding
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
perf_graph = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 20
[]
[chkfile]
type = CSV
file_base = ornl_zr2_2_aniso_chkfile
show = 'pressure_inner max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(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'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-06/puzry-06.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-06.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 3000. '
y = '1.e+05 1.e+05 1.06e+06' # Linear increase at 0.0759 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 3000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 3000.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-06_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_08MPa/rebeka_singlerod_2d_08MPa_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = rebeka_singlerod.e
[]
[]
[Variables]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '8.e+06 8.e+06' # 80 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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]
[clad]
block = cladding
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'
use_automatic_differentiation = true
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.
translation = 0.1625
boundary = 4
[]
[no_y_midsection]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 101 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
oxide_thickness = scale_thickness
number_axial_zone = 15
use_ad = true
[]
[]
[Materials]
[converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[thermal]
type = ADZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = cladding
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[clad_zrycreep]
type = ADZryAnisoCreepLOCAUpdate
block = cladding
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 = cladding
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = ADStrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ADZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-06
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp]
type = SideAverageValue
boundary = 2
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[top_disp_r_clad] # this is mid height
type = NodalVariableValue
variable = disp_x
nodeid = 0 #coords (0.005375, 0.1625)
[]
[top_disp_r_clad_slice] # this is mid height matched to the 1.5d
type = NodalVariableValue
variable = disp_x
nodeid = 3 #coords (0.005375, 0.1625)
[]
[top_disp_z_clad]
type = NodalVariableValue
variable = disp_y
nodeid = 0 #coords (0.005375, 0.1625)
[]
[stress_xx] # stess in the top Element
type = ElementalVariableValue
variable = stress_xx
elementid = 0
[]
[stress_yy] # stess in the top Element
type = ElementalVariableValue
variable = stress_yy
elementid = 0
[]
[stress_zz] # stess in the top Element
type = ElementalVariableValue
variable = stress_zz
elementid = 0
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
cladding_blocks = cladding
plenum_boundary_name = 4
external_clad_boundary_name = 2
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_08MPa_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-11/puzry-11_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-11.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1200. '
y = '1.e+05 1.e+05 1.534e+06' # Linear increase at 0.0717 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1200. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-11_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part1_gas_communication.i)
[GlobalParams]
density = 10452.96
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
slices_within_upper_plenum = 3
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 295.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 5.0e-6
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_fuel_radius]
order = FIRST
family = LAGRANGE
[]
[gap_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_moles]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_mole_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_volume]
order = CONSTANT
family = MONOMIAL
[]
[plenum_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[total_moles]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[layered_maximum_fuel_radius]
type = SpatialUserObjectAux
block = fuel
user_object = layered_maximum_fuel_radius
variable = layered_maximum_fuel_radius
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_pressure]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
variable = gap_layer_pressure
output_option = 'LAYER_PRESSURE'
execute_on = 'final timestep_end'
[]
[gap_layer_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_MOLES'
variable = gap_layer_moles
execute_on = 'timestep_end'
[]
[gap_layer_mole_rate]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'PLENUM_MOLE_RATE'
variable = gap_layer_mole_rate
execute_on = 'timestep_end'
[]
[gap_layer_temperature]
type = SpatialUserObjectAux
user_object = gap_layer_temperature
variable = gap_layer_temperature
execute_on = 'timestep_end'
[]
[gap_layer_volume]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_VOLUME'
variable = gap_layer_volume
execute_on = 'timestep_end'
[]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_END'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[gas_th_cond]
type = MaterialRealAux
variable = gap_thermal_conductivity
property = gap_conductivity
boundary = 10
execute_on = 'initial linear'
[]
[]
[AxialRelocation]
[relocation]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = 'MASS_FRACTION PACKING_FRACTION'
use_axial_gas_communication = true
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = 0.0170917878663391
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
output_gas_mixture = true
outputs = GasMixture
execution_order_group = -2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
incremental_calculation = true
execute_on = 'INITIAL LINEAR'
axial_gas_communication = axial_gas_communication
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period0]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = -200.0
end_time = 172387800.0
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = overstrain
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10452.96
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[layered_fuel_average]
type = LayeredSideAverage
variable = temperature
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
use_displaced_mesh = false
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_temperature]
type = LayeredGasGapTemperatureUserObject
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
gap_temp = gap_value
variable = temperature
boundary = '5'
distance = pt_distance
execute_on = 'INITIAL TIMESTEP_BEGIN'
execution_order_group = -1
[]
[cladding_failure_status]
type = LayeredSideAverage
variable = burst
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
execute_on = 'TIMESTEP_BEGIN'
[]
[layered_maximum_fuel_radius]
type = LayeredNodalExtremeValue
variable = 'outer_fuel_radius'
direction_min = 0.0
direction_max = 0.48
num_layers = 30
direction = y
boundary = 10
value_type = max
execute_on = 'INITIAL TIMESTEP_END'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
distance = pt_distance
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
gas_mixture = gas_mixture_thermal_contact
initial_pressure = 2.0e6
material_input = 'fis_gas_released'
execute_on = 'initial timestep_end'
debug_output = true
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[plenum_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial TIMESTEP_BEGIN'
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
[]
[gap_layer_pressure_min]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = min
execute_on = 'initial timestep_end'
[]
[gap_layer_pressure_max]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = max
execute_on = 'initial timestep_end'
[]
[gap_layer_moles]
type = ElementExtremeValue
value_type = max
variable = gap_layer_moles
execute_on = 'initial timestep_end'
[]
[plenum_mole_rate]
type = ElementAverageValue
variable = gap_layer_mole_rate
execute_on = 'initial timestep_end'
[]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
start_time = -200.0
end_time = 172387800 # End base irradiation
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '172387800 172388043 172488043 172489043 172489073 172489661'
time_dt = '1.0e04 1.0e04 10.0 5.0 0.5 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_1'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
perf_graph = true
exodus = true
[checkpoint]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_1]
type = CSV
# execute_on = 'FINAL'
# create_final_symlink = true
file_base = 'clad/new'
[]
[outfile_temp_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[GasMixture]
type = CSV
file_base = 'GasMixture/'
[]
[]
(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/LWR/validation/LOCA_ORNL_cladding_burst_tests/analysis/Zr4_1/ornl_zr4_1.i)
# Simulation ORNL burst tests Zr4_1
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = zr4_ornl_burst_test_mesh.e
[]
[]
[Variables]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func] # only 10 inches of the rod are within the heated zone (cf. Terrani email)
type = PiecewiseBilinear
data_file = temperature_ornl_zr4_1.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
data_file = pressure_inner_ornl_zr4_1.csv
scale_factor = 1.e+06
format = columns
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 373.9'
y = '0.1 0.1 ' # atmospheric pressure
scale_factor = 1.e+06
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = cladding
add_variables = true
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz hoop_stress'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = MaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = MaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 4'
preset = false
[]
[no_y_top]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
preset = false
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[mid_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 98 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
type = ZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = cladding
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = cladding
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
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = cladding
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = StrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.004175
clad_outer_radius = 0.004750
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
#use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 373.9
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[pressure_inner]
type = FunctionValuePostprocessor
function = inner_pressure_func
execute_on = 'initial timestep_end'
[]
[pressure_outer]
type = FunctionValuePostprocessor
function = outer_pressure_func
execute_on = 'initial timestep_end'
[]
[ave_clad_temp]
type = SideAverageValue
boundary = 2
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
execute_on = 'initial timestep_end'
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
execute_on = 'initial timestep_end'
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
execute_on = 'initial timestep_end'
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
execute_on = 'initial timestep_end'
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
execute_on = 'initial timestep_end'
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
execute_on = 'initial timestep_end'
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
execute_on = 'initial timestep_end'
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[mid_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 22
[]
[stress_xx_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_xx
elementid = 19
[]
[stress_yy_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_yy
elementid = 19
[]
[stress_zz_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_zz
elementid = 19
[]
[strain_zz_midplane] # strain in the mid Element
type = ElementalVariableValue
variable = strain_zz
elementid = 19
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
plenum_boundary_name = 4
cladding_blocks = cladding
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
perf_graph = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 20
[]
[chkfile]
type = CSV
file_base = ornl_zr4_1_chkfile
show = 'pressure_inner max_hoop_strain max_hoop_stress'
execute_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/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_14MPa/rebeka_singlerod_2d_14MPa.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = rebeka_singlerod.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.4e+07 1.4e+07' # 140 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = cladding
add_variables = false
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'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = MaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = MaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.0
translation = 0.1625
boundary = 4
[]
[no_y_midsection]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 101 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
number_axial_zone = 15
oxide_thickness = scale_thickness
[]
[]
[Materials]
[thermal]
type = ZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = cladding
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = cladding
temperature = temperature
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_loca_creep_begin = 501 # see Erbacher et al., 1982
temperature_standard_thermal_creep_end = 500
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = cladding
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = StrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average temperature of cladding exterior
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
cladding_blocks = cladding
plenum_boundary_name = 4
external_clad_boundary_name = 2
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_14MPa_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-26/puzry-26.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-26.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 1.203e+07' # Linear increase at 0.1193 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2000.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-26_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part2.i)
initial_fuel_density = 10452.96
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
restart_file_base = 'IFA_650_4_part1_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[]
[AxialRelocation]
[fuel_relo]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 3.17755E-06 # Addition of the volume to bring the starting total volume to 21.5cm^3 to begin the transient experiment
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = MASS_FRACTION
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_gas_types = 'He Ar'
initial_fractions = '0.05 0.95'
initial_moles = initial_moles
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
material_input = fis_gas_released
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period1]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = 172489043
end_time = 172489661
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
# axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
# hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
# end_time = 172387800 # End base irradiation
# end_time = 172489043 # Begin Blowdown
end_time = 172489661 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '172387800 172388043 172488043 172489043 172489073 172489661'
time_dt = '1.0e04 1.0e04 10.0 5.0 3.0 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_2'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_2'
[]
[mass_fraction]
type = LineValueSampler
start_point = '0 0.01124 0'
end_point = '0 0.47524 0'
num_points = 30
sort_by = y
variable = layered_mass_fraction
outputs = 'outfile_mass_2'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
exodus = true
execute_on = 'initial timestep_end'
perf_graph = true
[outfile_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_temp_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-15/puzry-15_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-15.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 1.183e+07' # Linear increase at 0.1173 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-07
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-15_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-10/puzry-10.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-10.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1200. '
y = '1.e+05 1.e+05 1.52e+06' # Linear increase at 0.0710 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1200. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 1200.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-10_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(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/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-20/puzry-20_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-20.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2500. '
y = '1.e+05 1.e+05 3.475e+06' # Linear increase at 0.0225 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2500. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 7.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-07
relative_tolerance = 1e-07
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-20_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_Studsvik/analysis/rod_191/Studsvik_191_part2_1p5d_fr_frd.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'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
restart_file_base = 'Studsvik_191_part1_1p5d_fr_frd_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 10
clad_gap_width = 8.0e-5
clad_thickness = 0.57e-3
fuel_height = 0.265388558
plenum_height = 0.034861442
elem_type = EDGE3
nx_p = 11
pellet_mesh_density = customize
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
[]
[]
[AuxVariables]
[strain_yy_0]
order = CONSTANT
family = MONOMIAL
[]
[tangential_contact_pressure_aux]
block = fuel
[]
# Define auxilary variables
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[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
[]
# Add this to accident part
[clad_surface_temperature]
type = PiecewiseBilinear
axis = 1
data_file = clad_temperature.csv
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
block = fuel
add_variables = true
add_scalar_variables = true
strain = FINITE
out_of_plane_strain_name = strain_yy
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_volumetric_eigenstrain '
'axial_relocation_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx hoop_stress '
'creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
fuel_pin_geometry = fuel_pin_geometry
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
decomposition_method = EigenSolution
layer_friction_user_object = 1DFriction_secondary
temperature = temperature
out_of_plane_pressure_function = fuel_axial_pressure
[]
[clad]
block = clad
add_variables = true
add_scalar_variables = true
strain = FINITE
out_of_plane_strain_name = strain_yy
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx hoop_stress '
'creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
fuel_pin_geometry = fuel_pin_geometry
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
decomposition_method = EigenSolution
layer_friction_user_object = 1DFriction_primary
temperature = temperature
out_of_plane_pressure_function = clad_axial_pressure
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
[]
[]
[Burnup]
[burnup]
block = fuel
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
[tangential_contact_pressure_aux]
type = SpatialUserObjectAux
variable = tangential_contact_pressure_aux
user_object = 1DFriction_secondary
block = fuel
execute_on = 'TIMESTEP_END'
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
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
[]
[Pressure]
[coolantPressure]
boundary = '2'
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 dispersal
[layered_average_hoop_strain]
type = LayeredAverage
block = clad
num_layers = 10
direction = y
variable = strain_zz
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
# We could have two element UOs to obtain interface stress
[1DContactStressOOP_fuel]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.255359
block = fuel
execute_on = 'LINEAR NONLINEAR'
[]
[1DContactStressOOP_cladding]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.255359
block = clad
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_secondary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = pellet_outer_radial_surface
num_layers = 10
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = true
tangential_pressure = tangential_contact_pressure_aux
friction_coefficient = 0.2
thickness = 0.0265
penalty_factor = 1.0e13
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.255359
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_primary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = clad_inside_right
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.255359
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = false
secondary_side_frictional_user_object = 1DFriction_secondary
friction_coefficient = 0.2
thickness = 0.0265
penalty_factor = 1.0e13
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
# Axial relocation object is created by axial relocation action
[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]
[fuel_dispersal]
type = UO2Dispersal
block = fuel
axial_relocation_object = axial_relocation
layered_average_burnup = layered_average_burnup
layered_average_hoop_strain = layered_average_hoop_strain
dispersal_model = ONE_MM_TWO_PERCENT_STRAIN
[]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = fuel
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
axial_relocation_object = axial_relocation
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
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 = fuel
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
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 = hoop_stress
hoop_creep_strain = creep_strain_zz
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[]
##
[AxialRelocation]
[relocation]
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy_0
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = MASS_FRACTION
mesh_generator = layered1D_mesh
gap_thickness_threshold = 0.00005
[]
[]
[Postprocessors]
[volume_fuel_dispersed]
type = LayeredElementIntegralMaterialProperty
block = fuel
mat_prop = dispersed
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial timestep_end'
[]
[mass_fuel_dispersed]
type = ParsedPostprocessor
pp_names = volume_fuel_dispersed
expression = '10431 * volume_fuel_dispersed'
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
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 = fuel
execute_on = 'linear'
[]
[fission_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = fuel
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = fuel
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 = fuel
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
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 = fuel
[]
[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'
[]
[]
[VectorPostprocessors]
[cladding_outer]
type = NodalValueSampler
boundary = 5
variable = disp_x
sort_by = y
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
layered = true
fuel_pin_geometry = fuel_pin_geometry
fuel_pellet_blocks = 'fuel'
[]
[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/LWR/validation/LOCA_ORNL_cladding_burst_tests/analysis/Zr2_2/ornl_zr2_2.i)
# Simulation ORNL burst tests Zr2_2
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = zr2_ornl_burst_test_mesh.e
[]
[]
[Variables]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func] # only 10 inches of the rod are within the heated zone (cf. Terrani email)
type = PiecewiseBilinear
data_file = temperature_ornl_zr2_2.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
data_file = pressure_inner_ornl_zr2_2.csv
scale_factor = 1.e+06
format = columns
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '0.1 0.1 ' # atmospheric pressure
scale_factor = 1.e+06
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = cladding
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'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = MaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = MaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 4'
preset = false
[]
[no_y_top]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
preset = false
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[mid_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 2 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
type = ZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = cladding
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = cladding
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
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = cladding
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = StrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.004875
clad_outer_radius = 0.005580
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
#use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 2.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 2.
[]
[]
[Postprocessors]
[pressure_inner]
type = FunctionValuePostprocessor
function = inner_pressure_func
execute_on = 'initial timestep_end'
[]
[pressure_outer]
type = FunctionValuePostprocessor
function = outer_pressure_func
execute_on = 'initial timestep_end'
[]
[ave_clad_temp]
type = SideAverageValue
boundary = 2
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
execute_on = 'initial timestep_end'
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
execute_on = 'initial timestep_end'
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
execute_on = 'initial timestep_end'
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
execute_on = 'initial timestep_end'
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
execute_on = 'initial timestep_end'
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
execute_on = 'initial timestep_end'
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
execute_on = 'initial timestep_end'
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[mid_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 22
[]
[stress_xx_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_xx
elementid = 19
[]
[stress_yy_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_yy
elementid = 19
[]
[stress_zz_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_zz
elementid = 19
[]
[strain_zz_midplane] # strain in the mid Element
type = ElementalVariableValue
variable = strain_zz
elementid = 19
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
plenum_boundary_name = 4
cladding_blocks = cladding
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
perf_graph = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 20
[]
[chkfile]
type = CSV
file_base = ornl_zr2_2_chkfile
show = 'pressure_inner max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-26/puzry-26_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-26.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 1.203e+07' # Linear increase at 0.1193 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-07
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-26_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(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'
[]
[]
(assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_10MPa/rebeka_singlerod_2d_10MPa_1pt5_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
volumetric_locking_correction = false
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_mesh_density = customize
include_fuel = false
include_clad = true
include_plenum = false
pellet_outer_radius = 0.00465
clad_gap_width = 0
clad_thickness = 0.000725
fuel_height = 0.1625
slices_per_block = 10
pellet_bottom_coor = 0.0
nx_c = 1
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
include_fuel = false
mesh_generator = layered1D_mesh
[]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
[Variables]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+07 1.e+07' # 100 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = inner_pressure_func
coolant_pressure = outer_pressure_func
coolant_pressure_scaling_factor = 1
fuel_pin_geometry = pin_geometry
[]
# 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/Layered1D]
[clad]
block = clad
add_variables = true
strain = FINITE
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
decomposition_method = TaylorExpansion
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain'
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'
group_scalar_vars_in_reference_residual = false
mesh_generator = layered1D_mesh
use_automatic_differentiation = true
[]
[]
[AuxVariables]
[disp_y] ## Required for easier visualization in Paraview
[]
[disp_z] ## Required for easier visualization in Paraview
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate_aux]
type = ADMaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[effective_creep_strain]
type = ADMaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
# [inner_temperature]
# type = REBEKADirichletBC
# variable = temperature
# function_tempm = temperature_func
# minimum_temperature = 573.0
# translation = 0.1625
# boundary = 5
# []
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 5
function = inner_pressure_func
[]
[]
[]
# [CoolantChannel]
# [convective_clad_surface]
# boundary = 2
# variable = temperature
# inlet_temperature = 473.
# inlet_pressure = 1.e+05
# inlet_massflux = 1. # kg/m^2-sec # almost stagnant steam
# rod_diameter = 10.75e-03
# rod_pitch = 1.26e-02 # default
# oxide_thickness = scale_thickness
# []
# []
[Materials]
[converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[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.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[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 = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ADZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
# use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate_aux
temperature = temperature
fraction_beta_phase = 'ad_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'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-06
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = temperature
fuel_pin_geometry = pin_geometry
[]
[max_clad_temp]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
[]
[min_clad_temp]
type = NodalExtremeValue
block = clad
value_type = min
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_creep_rate]
type = ElementExtremeValue
block = clad
value_type = max
variable = creep_rate_aux
[]
[max_eff_creep_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = effective_creep_strain
[]
[max_hoop_strain]
type = ElementExtremeValue
block = clad
value_type = max
variable = strain_zz
[]
[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 = pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[top_disp_r_clad_slice] # this is mid height
type = NodalVariableValue
variable = disp_x
nodeid = 28 # 1 line element
[]
[inner_pressure_func]
type = FunctionValuePostprocessor
function = inner_pressure_func
execute_on = 'initial linear'
[]
[stress_xx] # stess in the top Element
type = ElementalVariableValue
variable = stress_xx
elementid = 9 #single line element
[]
[stress_yy] # stess in the top Element
type = ElementalVariableValue
variable = stress_yy
elementid = 9 #single line element
[]
[stress_zz] # stess in the top Element
type = ElementalVariableValue
variable = stress_zz
elementid = 9 #single line element
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_10MPa_1pt5_out_chkfile
show = 'ave_clad_exterior_temp max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-08/puzry-08_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-08.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1200. '
y = '1.e+05 1.e+05 1.626e+06' # Linear increase at 0.0763 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1200. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 3.45e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-07
relative_tolerance = 1e-07
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-08_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(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
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-31/puzry-31.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-31.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1400. '
y = '1.e+05 1.e+05 7.944e+06' # Linear increase at 0.1961 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1400. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 1400.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-31_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_Studsvik/analysis/rod_196/Studsvik_196_part1_1p5d_fr_ffrd.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'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 10
clad_gap_width = 80e-6
plenum_height = 0.0393576
pellet_outer_radius = 3.92e-3
clad_thickness = 0.57e-3
fuel_height = 0.2606424
# nx_c = 2
# nx_p = 11
elem_type = EDGE3
[]
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
[strain_yy_0]
order = CONSTANT
family = MONOMIAL
[]
[tangential_contact_pressure_aux]
block = fuel
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
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
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
block = fuel
add_variables = true
add_scalar_variables = true
strain = FINITE
out_of_plane_strain_name = strain_yy
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_volumetric_eigenstrain axial_relocation_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx hoop_stress creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
fuel_pin_geometry = fuel_pin_geometry
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
decomposition_method = EigenSolution
temperature = temperature
out_of_plane_pressure_function = fuel_axial_pressure
layer_friction_user_object = 1DFriction_secondary
[]
[clad]
block = clad
add_variables = true
add_scalar_variables = true
strain = FINITE
out_of_plane_strain_name = strain_yy
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx hoop_stress creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
fuel_pin_geometry = fuel_pin_geometry
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
decomposition_method = EigenSolution
temperature = temperature
out_of_plane_pressure_function = clad_axial_pressure
layer_friction_user_object = 1DFriction_primary
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
[]
[]
[Burnup]
[burnup]
block = fuel
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 fuels (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 = fuel
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'
[]
[tangential_contact_pressure_aux]
type = SpatialUserObjectAux
variable = tangential_contact_pressure_aux
user_object = 1DFriction_secondary
block = fuel
execute_on = 'TIMESTEP_END'
[]
[]
[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
[]
[Pressure]
[coolantPressure]
boundary = '2'
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]
[layered_average_hoop_strain]
type = LayeredAverage
block = clad
num_layers = 10
direction = y
variable = strain_zz
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
# [fuel_pin_geometry]
# type = Layered1DFuelPinGeometry
# mesh_generator = layered1D_mesh
# []
[terminator]
type = Terminator
expression = 'burst > 0'
[]
# We could have two element UOs to obtain interface stress
[1DContactStressOOP_fuel]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.01306
direction_max = 0.24761028
block = fuel
execute_on = 'LINEAR NONLINEAR'
[]
[1DContactStressOOP_cladding]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.01306
direction_max = 0.24761028
block = clad
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_secondary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = pellet_outer_radial_surface
num_layers = 10
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = true
tangential_pressure = tangential_contact_pressure_aux
friction_coefficient = 0.2
thickness = 0.02606424
penalty_factor = 1.0e13
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.01306
direction_max = 0.24761028
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_primary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = clad_inside_right
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.24761028
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = false
secondary_side_frictional_user_object = 1DFriction_secondary
friction_coefficient = 0.2
thickness = 0.02606424
penalty_factor = 1.0e13
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
[]
[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 = fuel
# layered_average_contact_pressure = contact_pressure
# temperature = temperature
# burnup_function = burnup
# output_properties = pulverized
# outputs = all
# []
[fuel_dispersal]
type = UO2Dispersal
block = fuel
axial_relocation_object = axial_relocation
layered_average_burnup = layered_average_burnup
layered_average_hoop_strain = layered_average_hoop_strain
dispersal_model = ONE_MM_TWO_PERCENT_STRAIN
[]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = fuel
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
axial_relocation_object = axial_relocation
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
# [fuel_relocation]
# type = UO2RelocationEigenstrain
# block = fuel
# 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 = fuel
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 = fuel
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
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 = hoop_stress
hoop_creep_strain = creep_strain_zz
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[]
[VectorPostprocessors]
[cladding_outer]
type = NodalValueSampler
boundary = 5
variable = disp_x
sort_by = y
[]
[]
[AxialRelocation]
[relocation]
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy_0
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = MASS_FRACTION
mesh_generator = layered1D_mesh
# CHANGE
gap_thickness_threshold = 0.000050
[]
[]
[Postprocessors]
[volume_fuel_dispersed]
type = LayeredElementIntegralMaterialProperty
block = fuel
mat_prop = dispersed
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial timestep_end'
[]
[mass_fuel_dispersed]
type = ParsedPostprocessor
pp_names = volume_fuel_dispersed
expression = '10431 * volume_fuel_dispersed'
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
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 = fuel
execute_on = 'linear'
[]
[fission_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = fuel
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = fuel
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 = fuel
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
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 = fuel
[]
[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]
layered = true
fuel_pin_geometry = fuel_pin_geometry
fuel_pellet_blocks = 'fuel'
[]
[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/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_Studsvik/analysis/rod_191/Studsvik_191_part1_1p5d_fr_frd.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'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 10
clad_gap_width = 8.0e-5
clad_thickness = 0.57e-3
fuel_height = 0.265388558
plenum_height = 0.034861442
elem_type = EDGE3
nx_p = 11
pellet_mesh_density = customize
[]
patch_update_strategy = auto
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]
[strain_yy_0]
order = CONSTANT
family = MONOMIAL
[]
# Define auxilary variables
[tangential_contact_pressure_aux]
block = fuel
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
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
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
block = fuel
add_variables = true
add_scalar_variables = true
strain = FINITE
out_of_plane_strain_name = strain_yy
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_volumetric_eigenstrain axial_relocation_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx hoop_stress creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
fuel_pin_geometry = fuel_pin_geometry
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
decomposition_method = EigenSolution
temperature = temperature
layer_friction_user_object = 1DFriction_secondary
out_of_plane_pressure_function = fuel_axial_pressure
[]
[clad]
block = clad
add_variables = true
add_scalar_variables = true
strain = FINITE
out_of_plane_strain_name = strain_yy
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx hoop_stress creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
fuel_pin_geometry = fuel_pin_geometry
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
decomposition_method = EigenSolution
temperature = temperature
layer_friction_user_object = 1DFriction_primary
out_of_plane_pressure_function = clad_axial_pressure
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
[]
[]
[Burnup]
[burnup]
block = fuel
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]
[tangential_contact_pressure_aux]
type = SpatialUserObjectAux
variable = tangential_contact_pressure_aux
user_object = 1DFriction_secondary
block = fuel
execute_on = 'TIMESTEP_END'
[]
# 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 = fuel
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
[]
[Pressure]
[coolantPressure]
boundary = '2'
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 dispersal
[layered_average_hoop_strain]
type = LayeredAverage
block = clad
num_layers = 10
direction = y
variable = strain_zz
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
# We could have two element UOs to obtain interface stress
[1DContactStressOOP_fuel]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.255359
block = fuel
execute_on = 'LINEAR NONLINEAR'
[]
[1DContactStressOOP_cladding]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.255359
block = clad
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_secondary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = pellet_outer_radial_surface
num_layers = 10
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = true
tangential_pressure = tangential_contact_pressure_aux
friction_coefficient = 0.2
thickness = 0.0265
penalty_factor = 1.0e13
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.255359
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_primary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = clad_inside_right
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.255359
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = false
secondary_side_frictional_user_object = 1DFriction_secondary
friction_coefficient = 0.2
thickness = 0.0265
penalty_factor = 1.0e13
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
[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]
[fuel_dispersal]
type = UO2Dispersal
block = fuel
axial_relocation_object = axial_relocation
layered_average_burnup = layered_average_burnup
layered_average_hoop_strain = layered_average_hoop_strain
dispersal_model = ONE_MM_TWO_PERCENT_STRAIN
[]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = fuel
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
axial_relocation_object = axial_relocation
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
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 = fuel
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
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
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
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
[]
[]
[AxialRelocation]
[relocation]
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy_0
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = MASS_FRACTION
mesh_generator = layered1D_mesh
# CHANGE
gap_thickness_threshold = 0.000050
[]
[]
[Postprocessors]
[volume_fuel_dispersed]
type = LayeredElementIntegralMaterialProperty
block = fuel
mat_prop = dispersed
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial timestep_end'
[]
[mass_fuel_dispersed]
type = ParsedPostprocessor
pp_names = volume_fuel_dispersed
expression = '10431 * volume_fuel_dispersed'
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
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 = fuel
execute_on = 'linear'
[]
[fission_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = fuel
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = fuel
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 = fuel
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
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 = fuel
[]
[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'
[]
[]
[VectorPostprocessors]
[cladding_outer]
type = NodalValueSampler
boundary = 5
variable = disp_x
sort_by = y
[]
[]
[PerformanceMetricOutputs]
[]
[StandardLWRFuelRodOutputs]
temperature = temperature
layered = true
fuel_pin_geometry = fuel_pin_geometry
fuel_pellet_blocks = 'fuel'
[]
[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/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_02MPa/rebeka_singlerod_2d_02MPa_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = rebeka_singlerod.e
[]
[]
[Variables]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '2.e+06 2.e+06' # 10 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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]
[clad]
block = cladding
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'
use_automatic_differentiation = true
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.
translation = 0.1625
boundary = 4
[]
[no_y_midsection]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 101 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
oxide_thickness = scale_thickness
number_axial_zone = 15
use_ad = true
[]
[]
[Materials]
[thermal]
type = ADZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = cladding
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[clad_zrycreep]
type = ADZryAnisoCreepLOCAUpdate
block = cladding
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 = 'fract_beta_phase'
[]
[thermal_expansion]
type = ADZryThermalExpansionMATPROEigenstrain
block = cladding
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = ADStrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ADZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ADZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ADZryCladdingFailure
boundary = 2
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
solve_type = NEWTON
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.e-06
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp]
type = SideAverageValue
boundary = 2
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[top_disp_r_clad] # this is mid height
type = NodalVariableValue
variable = disp_x
nodeid = 0 #coords (0.005375, 0.1625)
[]
[top_disp_r_clad_slice] # this is mid height matched to the 1.5d
type = NodalVariableValue
variable = disp_x
nodeid = 3 #coords (0.005375, 0.1625)
[]
[top_disp_z_clad]
type = NodalVariableValue
variable = disp_y
nodeid = 0 #coords (0.005375, 0.1625)
[]
[stress_xx] # stess in the top Element
type = ElementalVariableValue
variable = stress_xx
elementid = 0
[]
[stress_yy] # stess in the top Element
type = ElementalVariableValue
variable = stress_yy
elementid = 0
[]
[stress_zz] # stess in the top Element
type = ElementalVariableValue
variable = stress_zz
elementid = 0
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
cladding_blocks = cladding
plenum_boundary_name = 4
external_clad_boundary_name = 2
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_02MPa_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
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/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-14/puzry-14.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-14.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2500. '
y = '1.e+05 1.e+05 1.795e+07' # Linear increase at 0.1190 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2500. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-14_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-14/puzry-14_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-14.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2500. '
y = '1.e+05 1.e+05 1.795e+07' # Linear increase at 0.1190 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2500. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
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.e-04
nl_abs_tol = 1.e-07
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-14_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(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
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-07/puzry-07.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-07.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1300. '
y = '1.e+05 1.e+05 2.377e+06' # Linear increase at 0.0759 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1300. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 1300.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-07_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_ORNL_cladding_burst_tests/analysis/Zr4_1/ornl_zr4_1_ad_hill.i)
# Simulation ORNL burst tests Zr4_1
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = zr4_ornl_burst_test_mesh.e
[]
[]
[Variables]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func] # only 10 inches of the rod are within the heated zone (cf. Terrani email)
type = PiecewiseBilinear
data_file = temperature_ornl_zr4_1.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
data_file = pressure_inner_ornl_zr4_1.csv
scale_factor = 1.e+06
format = columns
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 373.9'
y = '0.1 0.1 ' # atmospheric pressure
scale_factor = 1.e+06
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = cladding
add_variables = true
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
# decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz hoop_stress'
use_automatic_differentiation = true
decomposition_method = TaylorExpansion
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 4'
preset = false
[]
[no_y_top]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
preset = false
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[mid_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 98 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[thermal]
type = ADZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ADZryElasticityTensor
block = cladding
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.5 0.5 0.5 1.0 1.0 1.0"
# hill_constants = "0.304 0.240 0.956 1.0 1.0 1.0"
[]
[clad_zrycreep]
type = ADZryAnisoCreepLOCAUpdate
block = cladding
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 = cladding
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = ADStrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ADZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.004175
clad_outer_radius = 0.004750
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
#use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[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 = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 373.9
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[pressure_inner]
type = FunctionValuePostprocessor
function = inner_pressure_func
execute_on = 'initial timestep_end'
[]
[pressure_outer]
type = FunctionValuePostprocessor
function = outer_pressure_func
execute_on = 'initial timestep_end'
[]
[ave_clad_temp]
type = SideAverageValue
boundary = 2
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
execute_on = 'initial timestep_end'
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
execute_on = 'initial timestep_end'
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
execute_on = 'initial timestep_end'
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
execute_on = 'initial timestep_end'
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
execute_on = 'initial timestep_end'
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
execute_on = 'initial timestep_end'
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
execute_on = 'initial timestep_end'
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[mid_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 22
[]
[stress_xx_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_xx
elementid = 19
[]
[stress_yy_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_yy
elementid = 19
[]
[stress_zz_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_zz
elementid = 19
[]
[strain_zz_midplane] # strain in the mid Element
type = ElementalVariableValue
variable = strain_zz
elementid = 19
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
plenum_boundary_name = 4
cladding_blocks = cladding
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
perf_graph = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 20
[]
[chkfile]
type = CSV
file_base = ornl_zr4_1_ad_hill_chkfile
show = 'pressure_inner max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(test/tests/plenum_pressure/past_rupture.i)
# This simulation is prepared to test the equilibrating of the plenum pressure
# after cladding rupture.
#
# - Geometry:
# ri = 0.005 m
# ro = 0.0055 m
# H = 0.01 m
#
# - Single element
#
# - Temperature = 1000 K
#
# - Boundary conditions:
# initial internal pressure is 1 MPa
# additional material is added at a rate of 2e-4 * t where t is in seconds
# pressure at outer surface (po) = 0.1 MPa
#
# After failure the pressure at the inner surface is set equal to the pressure
# at the outer surface.
#--------------------------------------------------------------------------------
[Mesh]
coord_type = RZ
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
xmin = 0.005
xmax = 0.0055
ymin = 0.0
ymax = 0.01
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[temperature]
initial_condition = 1000.0
[]
[]
[Functions]
[material_input_function]
type = ParsedFunction
expression = '2e-4 * t'
[]
[outer_pressure_function]
type = ConstantFunction
value = 0.1e5
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = 0
add_variables = true
strain = FINITE
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = right #3
execute_on = timestep_end
[]
[temperature]
type = ConstantAux
variable = temperature
value = 1000.0
[]
[]
[BCs]
[outersurface]
type = Pressure
boundary = right
variable = disp_x
function = outer_pressure_function
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 'top bottom'
value = 0.0
[]
[PlenumPressure]
[1]
boundary = left
initial_pressure = 1e6
R = 8.314472
temperature = aveTempInterior
volume = internalVolume
output = ppress
output_initial_moles = initial_moles
material_input = materialInput
[]
[]
[]
[Materials]
[phase]
type = ZrPhase
block = 0
temperature = temperature
numerical_method = 2
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = 0
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = 0
temperature = temperature
model_thermal_creep = true
model_irradiation_creep = false
model_primary_creep = false
[]
[clad_density]
type = StrainAdjustedDensity
block = 0
strain_free_density = 6500
[]
[thermal]
type = HeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 100.0
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = right
failure_criterion = plastic_instability
effective_strain_rate_creep = creep_rate
temperature = temperature
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 5.0
dt = 0.1
[]
[Postprocessors]
[creep_rate]
type = ElementalVariableValue
elementid = 0
variable = creep_rate
[]
[burst]
type = ElementalVariableValue
elementid = 0
variable = burst
[]
[internalVolume]
type = InternalVolume
boundary = left
execute_on = 'initial linear'
[]
[aveTempInterior]
type = SideAverageValue
boundary = left
variable = temperature
execute_on = 'initial linear'
[]
[materialInput]
type = FunctionValuePostprocessor
function = material_input_function
[]
[equilibrium_pressure]
type = FunctionValuePostprocessor
function = outer_pressure_function
[]
[]
[Outputs]
csv = true
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-20/puzry-20.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-20.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2500. '
y = '1.e+05 1.e+05 3.475e+06' # Linear increase at 0.0225 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2500. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-20_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(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/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-02/puzry-02_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-02.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 7.5e+05' # Linear increase at 0.064 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 2.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-07
relative_tolerance = 1e-07
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-02_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(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
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_9/IFA_650_9_part1.i)
initial_fuel_density = 10430.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.262416
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
initial_condition = 295.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseBilinear
data_file = average_coolant_htc.csv
axis = 1
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 200412461 200413048'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
initial_condition = 5.0e-6
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain
fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hoop_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
strain_zz creep_strain_zz hoop_stress'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[]
[AxialRelocation]
[rel]
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
gap_thickness_threshold = 0.00039
axial_relocation_output_options = 'MASS_FRACTION'
mesh_generator = layered1D_mesh
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 199159200
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
material_input = fis_gas_released
output = plenum_pressure
refab_time = 199159200
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 1.9e-05
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period0]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = -200.0
end_time = 199159200.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10430.0
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
start_time = -200.0
end_time = 199159200 # End base irradiation
# end_time = 200412431 # Begin Blowdown
# end_time = 200413048 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '199159200 200312431 200411431 200412431 200412461 200413048'
time_dt = '1.0e04 1.0e04 10.0 5.0 0.5 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_1'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_1'
[]
[mass_fraction]
type = LineValueSampler
start_point = '0 0.01124 0'
end_point = '0 0.47524 0'
num_points = 30
sort_by = y
variable = layered_mass_fraction
outputs = 'outfile_mass_1'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
perf_graph = true
[exodus]
type = Exodus
file_base = IFA_650_9_part1_out
execute_on = 'initial timestep_end'
[]
[checkpoint]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_temp_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_1]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-11/puzry-11.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-11.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1200. '
y = '1.e+05 1.e+05 1.534e+06' # Linear increase at 0.0717 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1200. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 1200.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-11_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-09/puzry-09.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[temperature]
initial_condition = 300.
[]
[disp_x]
[]
[disp_y]
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-09.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1200. '
y = '1.e+05 1.e+05 1.524e+06' # Linear increase at 0.0712 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1200. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 1200.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-09_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_10/IFA_650_10_part2.i)
# Halden test IFA-650.10
initial_fuel_density = 10447
[GlobalParams]
density = ${initial_fuel_density}. # 95.32% of 10960
displacements = 'disp_x disp_y'
temperature = temp
order = FIRST
family = LAGRANGE
energy_per_fission = 3.28451e-11 # J/fission
volumetric_locking_correction = true
[]
[Problem]
restart_file_base = 'IFA_650_10_part1_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = mesh_ifa65010.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
[]
[]
[Functions]
[linear_heat_rate]
type = PiecewiseLinear
data_file = lhr_average.csv
scale_factor = 1.e+03
format = columns
[]
[axial_power_peaking_factors]
type = PiecewiseBilinear
data_file = lhr_peaking_factors.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[rod_outer_pressure]
type = PiecewiseLinear
data_file = rod_outer_pressure.csv
scale_factor = 1.e+06
format = columns
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = temp_outer_clad.csv
scale_factor = 1.
axis = 1 # (0,1,2) => (x,y,z)
[]
[q] # same as linear_heat_rate for the base irradiation
type = PiecewiseLinear
data_file = lhr_average.csv
scale_factor = 1.e+03
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heat_sink_temperature.csv
scale_factor = 1.
axis = 1 # (0,1,2) => (x,y,z)
[]
[average_coolant_htc]
type = PiecewiseLinear
data_file = htc_average.csv
scale_factor = 1.
format = columns
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '0 125690842. 125691189.5'
y = '9 9 8 '
direction = 'right'
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
format = columns
[]
[]
[AuxVariables]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
[]
[thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness] # ZrO2 scale thickness (m)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total] # Current oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total] # Gained oxigen weight fraction (oxide+metal) (/)
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[coolant_hflux]
order = CONSTANT
family = MONOMIAL
[]
[coolant_temp]
order = CONSTANT
family = MONOMIAL
[]
[hmode]
order = CONSTANT
family = MONOMIAL
[]
[htype]
order = CONSTANT
family = MONOMIAL
[]
[pellet_id]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_1
variable = grain_radius
temperature = temp
execute_on = linear
[]
[thcond]
type = MaterialRealAux
property = thermal_conductivity
variable = thermal_conductivity
block = pellet_type_1
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxi_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[ofract_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
execute_on = 'initial linear'
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[coolant_hflux]
type = MaterialRealAux
property = output_heat_flux
variable = coolant_hflux
boundary = 2
execute_on = 'initial linear'
[]
[coolant_temp]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temp
boundary = 2
execute_on = 'initial linear'
[]
[hmode]
type = MaterialRealAux
property = coolant_channel_hmode
variable = hmode
boundary = 2
execute_on = 'initial linear'
[]
[htype]
type = MaterialRealAux
property = coolant_channel_htype
variable = htype
boundary = 2
execute_on = 'initial linear'
[]
[pelletid]
type = PelletIdAux
block = pellet_type_1
variable = pellet_id
a_lower = 8.5e-03
a_upper = 448.5e-03
number_pellets = 44
execute_on = initial
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = pellet_type_1
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_eigenstrain
fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
[]
[clad]
block = clad
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[]
[heat_ie] # time term in heat conduction equation
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source] # source term in heat conduction equation
type = NeutronHeatSource
variable = temp
block = pellet_type_1
fission_rate = fission_rate
[]
[]
[Burnup]
[burnup]
order = CONSTANT
family = MONOMIAL
block = pellet_type_1
rod_ave_lin_pow = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
num_radial = 50
bias = 0.95
num_axial = 20
a_lower = 8.5e-03
a_upper = 448.5e-03
fuel_inner_radius = 0.
fuel_outer_radius = 4.105e-03
fuel_volume_ratio = 1.
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.04487 0.95513 0 0 0 0'
RPF = RPF
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1.e+07
model = frictionless
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
quadrature = true
normal_smoothing_distance = 0.1
roughness_secondary = 1.8e-07
roughness_primary = 2.e-06
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 124861061.
refab_type = 0
[]
[]
#TODO: Add option in StandardLWRFuelRodOutputs to compute plenum temperature this way.
# 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
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_outer_temperature
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
function = rod_outer_pressure
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 2.6e+06
startup_time = 0.
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
refab_time = 124861061.
refab_pressure = 4.e+06
refab_temperature = 293.15
refab_volume = 1.7e-05
[]
[]
[]
[Controls]
#[period0]
# type = TimePeriod
# disable_objects = 'BCs/clad_outer_temp'
# start_time = 0.
# end_time = 124861061.0
#[]
[period1]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = 125690771.0
end_time = 125691189.5
[]
[]
[CoolantChannel]
[convective_clad_surface] # PWR conditions (ignored after base irradiation)
boundary = '1 2 3'
variable = temp
heat_transfer_mode = heat_transfer_mode # prescribe htc until end of blowdown. Then use radiative (+ convective prescribed)
heat_transfer_coefficient = average_coolant_htc # For base irradiation, using averge htc from a previous simulation. Afterwards, use constant values (from jernkvist) plus radiation from end of blowdown
effective_emissivity = 0.6 # 0.75 # cf. Jernkvist
inlet_temperature = heat_sink_temperature # K
#inlet_pressure = 15.5e+06 # Pa
#inlet_massflux = 3800. # kg/m^2-s
rod_diameter = 9.5e-03 # m
rod_pitch = 1.26e-2 # m
linear_heat_rate = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
compute_enthalpy = false #true
#oxide_thickness = oxide_thickness
#heat_transfer_mode = 1 # Natural convection
#htc_correlation_type = 2 # Jens-Lottes (recommended for Halden HBWR)
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_1
thermal_conductivity_model = NFIR
temperature = temp
burnup_function = burnup
initial_porosity = 0.0468
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_1
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_1
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = pellet_type_1
fragmentation_model = BARANI
rod_ave_lin_pow = linear_heat_rate
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
block = pellet_type_1
inelastic_models = 'fuel_creep'
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_1
temperature = temp
burnup_function = burnup
initial_porosity = 0.0468
initial_fuel_density = 10447.
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
[]
[fuel_creep]
type = UO2CreepUpdate
block = pellet_type_1
temperature = temp
fission_rate = fission_rate
#burnup_function = burnup #TODO For consistency, we should specify burnup_function rather than fission_rate,
#but keeping it this way to match the SM model
initial_grain_radius = 4.65e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_1
burnup_function = burnup
diameter = 8.21e-03
rod_ave_lin_pow = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
diametral_gap =150.e-06
burnup_relocation_stop = 1.e+20
eigenstrain_name = fuel_relocation_eigenstrain
relocation_activation1 = 19685.039
[]
[fission_gas]
type = UO2Sifgrs
block = pellet_type_1
temperature = temp
burnup_function = burnup
grain_radius = grain_radius
gbs_model = true
initial_porosity = 0.0468
diff_coeff_option = TURNBULL_D1_D2
transient_option = MICROCRACKING_BURNUP
pellet_id = pellet_id
pellet_brittle_zone = pbz
ath_model = true
rod_ave_lin_pow = linear_heat_rate
axial_power_profile = axial_power_peaking_factors
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
type = HeatConductionMaterial
block = clad
thermal_conductivity = 16.
specific_heat = 330.
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 300.0 #TODO: It is odd to have different values for fuel and clad, but keeping this way to match SM
eigenstrain_name = clad_thermal_strain
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 1.e+11
poissons_ratio = 0.3
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
#TODO: The parameters below really should be provided, but they weren't specified in the SM model.
# They may have not been included because irradiation creep wasn't modeled. However, they are used in the thermal
# creep model as well.
# fast_neutron_flux = fast_neutron_flux
# fast_neutron_fluence = fast_neutron_fluence
[]
[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 = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temp
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
#eff_strain_rate_plast =
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temp
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50.0
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1.e-05
variable = disp_x
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
l_tol = 1.e-02 # <--- l_tol is ignored when EW is used.
#l_tol = 8.e-03
line_search = 'none'
l_max_its = 200
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-10
n_startup_steps = 1
#end_time = 124861061. # End of base irradiation
#end_time = 125690771. # Blowdown. End prescribing clad outer temperature.
#end_time = 125690842. # End of blowdown
end_time = 125691189.5
dtmax = 5.e+05
dtmin = 0.00000001
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = timestep_material
dt = 1.e+02
#growth_factor = 1.1
#optimal_iterations = 4
#iteration_window = 2
timestep_limiting_function = forced_times #linear_heat_rate
max_function_change = 2000.
force_step_every_function_point = true
time_t = '121509219. 124861061. 125680151. 125690151. 125690771. 125691027. 125691033.'
time_dt = '5.e+05 1.e+04 1.e+04 10. 5. 0.5 5. '
[]
[]
[UserObjects]
[pbz]
type = PelletBrittleZone
block = pellet_type_1
pellet_id = pellet_id
temperature = temp
a_lower = 8.5e-03
a_upper = 448.5e-03
pellet_radius = 4.105e-03
number_pellets = 44
execute_on = 'initial linear'
[]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = true
[]
[]
[Postprocessors]
[alhr_input]
type = FunctionValuePostprocessor
function = linear_heat_rate
execute_on = 'initial timestep_end'
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[oxygen_fract_max]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfract_total
execute_on = 'initial timestep_end'
[]
[oxygen_fgain_max]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfgain_total
execute_on = 'initial timestep_end'
[]
[creep_rate_max]
type = ElementExtremeValue
value_type = max
variable = creep_rate
block = clad
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
[]
[strain_clad_hoop_max]
type = ElementExtremeValue
value_type = max
variable = hoop_strain
block = clad
[]
[stress_clad_hoop_max]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_midplane]
type = NodalVariableValue
nodeid = 676 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_tclow]
type = NodalVariableValue
nodeid = 826 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_tchigh]
type = NodalVariableValue
nodeid = 511 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_plenum_mid]
type = NodalVariableValue
nodeid = 241 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_inner_midplane]
type = NodalVariableValue
nodeid = 679 # !! Mesh dependent
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_max]
type = NodalExtremeValue
boundary = '1 2 3'
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_clad_outer_ave]
type = SideAverageValue
boundary = 2
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
block = pellet_type_1
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_fuel_central]
type = NodalVariableValue
variable = temp
nodeid = 1569 # !! Mesh dependent
execute_on = 'initial timestep_end'
[]
[temp_fuel_outer_max]
type = NodalExtremeValue
boundary = 10
value_type = max
variable = temp
execute_on = 'initial timestep_end'
[]
[strain_clad_hoop_outer_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = hoop_strain
execute_on = 'initial timestep_end'
[]
[stress_clad_hoop_outer_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = hoop_stress
execute_on = 'initial timestep_end'
[]
[contact_pressure_midplane]
type = ElementalVariableValue
elementid = 1300 # !! Mesh dependent
variable = contact_pressure
execute_on = 'initial timestep_end'
[]
[oxide_thickness_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = oxide_thickness
execute_on = 'initial timestep_end'
[]
[gap_conductance_average]
type = SideAverageValue
boundary = 10
variable = gap_conductance
execute_on = 'initial timestep_end'
[]
[coolant_htc_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = coolant_htc
execute_on = 'initial timestep_end'
[]
[coolant_htc_average]
type = SideAverageValue
boundary = 2
variable = coolant_htc
execute_on = 'initial timestep_end'
[]
[coolant_hflux_midplane]
type = ElementalVariableValue
elementid = 536 # !! Mesh dependent
variable = coolant_hflux
execute_on = 'initial timestep_end'
[]
[coolant_hflux_average]
type = SideAverageValue
boundary = 2
variable = coolant_hflux
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = hoop_strain
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
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_2'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'outfile_temp_2'
[]
[]
[StandardLWRFuelRodOutputs]
fuel_pellet_blocks = pellet_type_1
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
color = false
[console]
type = Console
output_linear = true
max_rows = 10
[]
[outfile_2]
type = CSV
execute_on = 'FINAL'
[]
[outfile_temp_2]
type = CSV
execute_on = 'FINAL'
[]
[]
(test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_overstrain.i)
#--------------------------------------------------------------------------------
#
# This test case is prepared to test the LOCA failure (burst) criterion for Zirconium alloy
# using the ZryCladdingFailure and ZryCreepLOCAUpdate materials.
#
# - Geometry:
# ri = 0.005 m
# ro = 0.0055 m
# H = 0.01 m
#
# - Single element
#
# - Temperature = 1000 K
#
# - Boundary conditions:
# pressure at inner surface (pi) = from 1 to 10 MPa in 10 s
# pressure at outer surface (po) = 0.1 MPa
#
# Cladding failure is considered to occur when the overstrain criterion
# is achieved (criterion = 3).
#
# The limiting true creep hoop strain is 33.6%
#
#--------------------------------------------------------------------------------
[Mesh]
coord_type = RZ
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
xmin = 0.005
xmax = 0.0055
ymin = 0.0
ymax = 0.01
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.
[]
[]
[AuxVariables]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
initial_condition = .334
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0 10'
y = '1000 1000'
[]
[inner_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 10.0'
[]
[outer_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = 0
add_variables = true
strain = FINITE
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[hoop_creep_strain]
type = FunctionAux
variable = hoop_creep_strain
function = '.334+t'
[]
# NOTE: a function corresponding to the strain is applied to test the failure
# model. In reality, one would couple the displacements and the calculated
# strain as shown, but has been commented out.
# [hoop_creep_strain]
# type = RankTwoScalarAux
# rank_two_tensor = creep_strain
# variable = hoop_creep_strain
# scalar_type = HoopStress
# execute_on = timestep_end
# []
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = right #3
execute_on = timestep_end
[]
[]
[BCs]
[outersurface]
type = Pressure
boundary = right
variable = disp_x
factor = 1.0e5
function = outer_pressure_function
[]
[innersurface]
type = Pressure
boundary = left
variable = disp_x
factor = 1.0e6
function = inner_pressure_function
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 'top bottom'
value = 0.0
[]
[temp_bc_1]
type = FunctionDirichletBC
variable = temp
boundary = 'left right top bottom'
function = temperature_function
[]
[]
[Materials]
[phase]
type = ZrPhase
block = 0
temperature = temp
numerical_method = 2
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = 0
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = 0
temperature = temp
model_thermal_creep = true
model_irradiation_creep = false
model_primary_creep = false
[]
[clad_density]
type = StrainAdjustedDensity
block = 0
strain_free_density = 6500
[]
[thermal]
type = HeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 100.
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = right #3
failure_criterion = overstrain
hoop_creep_strain = hoop_creep_strain
temperature = temp
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 0.003
dt = 0.001
[]
[Postprocessors]
[hoop_creep_strain]
type = ElementalVariableValue
elementid = 0
variable = hoop_creep_strain
[]
[burst]
type = ElementalVariableValue
elementid = 0
variable = burst
[]
[]
[Outputs]
exodus = true
[console]
type = Console
max_rows = 25
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-01/puzry-01_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-01.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 7.4e+05' # Linear increase at 0.064 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-07
relative_tolerance = 1e-07
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-01_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-29/puzry-29.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-29.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 7.3e+06' # Linear increase at 0.0720 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2000.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-29_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-28/puzry-28.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-28.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2500. '
y = '1.e+05 1.e+05 6.475e+06' # Linear increase at 0.0425 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2500. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-28_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-27/puzry-27_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-27.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 3000. '
y = '1.e+05 1.e+05 5.06e+06' # Linear increase at 0.0248 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 3000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-07
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-27_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-10/puzry-10_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-10.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1200. '
y = '1.e+05 1.e+05 1.52e+06' # Linear increase at 0.0710 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1200. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-10_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_ORNL_cladding_burst_tests/analysis/Zr4_1/ornl_zr4_1_ad_hill_aniso.i)
# Simulation ORNL burst tests Zr4_1
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = zr4_ornl_burst_test_mesh.e
[]
[]
[Variables]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func] # only 10 inches of the rod are within the heated zone (cf. Terrani email)
type = PiecewiseBilinear
data_file = temperature_ornl_zr4_1.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
data_file = pressure_inner_ornl_zr4_1.csv
scale_factor = 1.e+06
format = columns
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 373.9'
y = '0.1 0.1 ' # atmospheric pressure
scale_factor = 1.e+06
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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]
[clad]
block = cladding
add_variables = true
strain = FINITE
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
# decomposition_method = EigenSolution
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz hoop_stress'
use_automatic_differentiation = true
decomposition_method = TaylorExpansion
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 4'
preset = false
[]
[no_y_top]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
preset = false
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[mid_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 98 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[thermal]
type = ADZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ADZryElasticityTensor
block = cladding
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[clad_zrycreep]
type = ADZryAnisoCreepLOCAUpdate
block = cladding
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 = cladding
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = ADStrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ADZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.004175
clad_outer_radius = 0.004750
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
#use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[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 = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 373.9
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[pressure_inner]
type = FunctionValuePostprocessor
function = inner_pressure_func
execute_on = 'initial timestep_end'
[]
[pressure_outer]
type = FunctionValuePostprocessor
function = outer_pressure_func
execute_on = 'initial timestep_end'
[]
[ave_clad_temp]
type = SideAverageValue
boundary = 2
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
execute_on = 'initial timestep_end'
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
execute_on = 'initial timestep_end'
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
execute_on = 'initial timestep_end'
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
execute_on = 'initial timestep_end'
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
execute_on = 'initial timestep_end'
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
execute_on = 'initial timestep_end'
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
execute_on = 'initial timestep_end'
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[mid_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 22
[]
[stress_xx_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_xx
elementid = 19
[]
[stress_yy_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_yy
elementid = 19
[]
[stress_zz_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_zz
elementid = 19
[]
[strain_zz_midplane] # strain in the mid Element
type = ElementalVariableValue
variable = strain_zz
elementid = 19
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
plenum_boundary_name = 4
cladding_blocks = cladding
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
perf_graph = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 20
[]
[chkfile]
type = CSV
file_base = ornl_zr4_1_ad_hill_aniso_chkfile
show = 'pressure_inner max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-16/puzry-16_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-16.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 1.234e+07' # Linear increase at 0.1224 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-07
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-16_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_10MPa/rebeka_singlerod_2d_10MPa.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = rebeka_singlerod.e
[]
[]
[Variables]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+07 1.e+07' # 100 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = cladding
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'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = MaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = MaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.
translation = 0.1625
boundary = 4
[]
[no_y_midsection]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 101 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
oxide_thickness = scale_thickness
[]
[]
[Materials]
[thermal]
type = ZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = cladding
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = cladding
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 = cladding
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = StrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-06
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp]
type = SideAverageValue
boundary = 2
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[top_disp_r_clad] # this is mid height
type = NodalVariableValue
variable = disp_x
nodeid = 0 #coords (0.005375, 0.1625)
[]
[top_disp_r_clad_slice] # this is mid height matched to the 1.5d
type = NodalVariableValue
variable = disp_x
nodeid = 3 #coords (0.005375, 0.1625)
[]
[top_disp_z_clad]
type = NodalVariableValue
variable = disp_y
nodeid = 0 #coords (0.005375, 0.1625)
[]
[stress_xx] # stess in the top Element
type = ElementalVariableValue
variable = stress_xx
elementid = 0
[]
[stress_yy] # stess in the top Element
type = ElementalVariableValue
variable = stress_yy
elementid = 0
[]
[stress_zz] # stess in the top Element
type = ElementalVariableValue
variable = stress_zz
elementid = 0
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
cladding_blocks = cladding
plenum_boundary_name = 4
external_clad_boundary_name = 2
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_10MPa_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-18/puzry-18_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-18.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1500. '
y = '1.e+05 1.e+05 5.855e+06' # Linear increase at 0.1151 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1500. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 5.0e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-18_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(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/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_12MPa/rebeka_singlerod_2d_12MPa_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = rebeka_singlerod.e
[]
[]
[Variables]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '12.e+06 12.e+06' # 120 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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]
[clad]
block = cladding
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'
use_automatic_differentiation = true
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.
translation = 0.1625
boundary = 4
[]
[no_y_midsection]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 101 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
oxide_thickness = scale_thickness
number_axial_zone = 15
use_ad = true
[]
[]
[Materials]
[converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[thermal]
type = ADZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = cladding
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[clad_zrycreep]
type = ADZryAnisoCreepLOCAUpdate
block = cladding
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 = cladding
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = ADStrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ADZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-06
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp]
type = SideAverageValue
boundary = 2
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[top_disp_r_clad] # this is mid height
type = NodalVariableValue
variable = disp_x
nodeid = 0 #coords (0.005375, 0.1625)
[]
[top_disp_r_clad_slice] # this is mid height matched to the 1.5d
type = NodalVariableValue
variable = disp_x
nodeid = 3 #coords (0.005375, 0.1625)
[]
[top_disp_z_clad]
type = NodalVariableValue
variable = disp_y
nodeid = 0 #coords (0.005375, 0.1625)
[]
[stress_xx] # stess in the top Element
type = ElementalVariableValue
variable = stress_xx
elementid = 0
[]
[stress_yy] # stess in the top Element
type = ElementalVariableValue
variable = stress_yy
elementid = 0
[]
[stress_zz] # stess in the top Element
type = ElementalVariableValue
variable = stress_zz
elementid = 0
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
cladding_blocks = cladding
plenum_boundary_name = 4
external_clad_boundary_name = 2
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_12MPa_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
(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/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-12/puzry-12_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-12.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1200. '
y = '1.e+05 1.e+05 1.546e+06' # Linear increase at 0.0723 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1200. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 2.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-07
relative_tolerance = 1e-07
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-12_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-04/puzry-04.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-04.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 7.2e+05' # Linear increase at 0.0062 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2000.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-04_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/ad_zry_clad_failure_rupture_temperature.i)
#--------------------------------------------------------------------------------
#
# This test case is prepared to test the LOCA failure (burst) criterion for Zirconium alloy
# using the ZryCladdingFailure and ZryCreepLOCAUpdate materials.
#
# - Geometry:
# ri = 0.005 m
# ro = 0.0055 m
# H = 0.01 m
#
# - Single element
#
# - Temperature rampes from 300 K to 1000 K in 10 s
#
# - Boundary conditions:
# pressure at inner surface (pi) = 10 MPa
# pressure at outer surface (po) = 0.1 MPa
#
# Cladding failure is considered to occur when a rupture temperature is exceeded
# (criterion = 5, i.e., rupture temperature criterion).
#
# Failure occurs when the temperature exceeds the calculated rupture temperature
# and the simulation is terminated. This occurs at 128 s when the rupture
# temperature is 933.01 K and the prescribed temperature is 940 K.
#
#--------------------------------------------------------------------------------
[Mesh]
coord_type = RZ
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
xmin = 0.005
xmax = 0.0055
ymin = 0.0
ymax = 0.01
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 300.0
[]
[]
[AuxVariables]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[rupture_temperature]
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0 140'
y = '300 1000'
[]
[inner_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '10.0 10.0'
[]
[outer_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
use_automatic_differentiation = true
block = 0
add_variables = true
strain = FINITE
generate_output = 'stress_zz strain_zz'
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[fract_bphase]
type = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = 0
[]
[rupture_temperature]
type = ADMaterialRealAux
variable = rupture_temperature
property = rupture_temperature
boundary = right
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = right
execute_on = timestep_end
[]
[]
[BCs]
[outersurface]
type = ADPressure
boundary = right
variable = disp_x
factor = 1.0e5
function = outer_pressure_function
[]
[innersurface]
type = ADPressure
boundary = left
variable = disp_x
factor = 1.0e6
function = inner_pressure_function
[]
[u_bottom_fix]
type = ADDirichletBC
variable = disp_y
boundary = 'top bottom'
value = 0.0
[]
[temp_bc_1]
type = ADFunctionDirichletBC
variable = temperature
boundary = 'left right top bottom'
function = temperature_function
[]
[]
[Materials]
[phase]
type = ADZrPhase
block = 0
temperature = temperature
numerical_method = 2
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'zry_thermal_creep'
block = 0
[]
[zry_thermal_creep]
type = ADZryCreepLOCAUpdate
block = 0
temperature = temperature
model_thermal_creep = true
model_irradiation_creep = false
model_primary_creep = false
max_inelastic_increment = 1.e-2
[]
[clad_density]
type = ADStrainAdjustedDensity
block = 0
strain_free_density = 6500
[]
[thermal]
type = ADHeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 100.0
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = right
failure_criterion = rupture_temperature
hoop_stress = stress_zz
hoop_strain = strain_zz
heating_rate = 5.0
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 140.0
[TimeStepper]
type = ConstantDT
dt = 2
[]
[]
[Postprocessors]
[hoop_stress]
type = ElementExtremeValue
variable = stress_zz
[]
[temperature]
type = NodalExtremeValue
variable = temperature
[]
[rupture_temperature]
type = ElementExtremeValue
variable = rupture_temperature
[]
[burst]
type = ElementExtremeValue
variable = burst
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
[Outputs]
csv = true
[]
(assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_04MPa/rebeka_singlerod_2d_04MPa.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = rebeka_singlerod.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '4.e+06 4.e+06' # 40 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = cladding
add_variables = false
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'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = MaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = MaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.0
translation = 0.1625
boundary = 4
[]
[no_y_midsection]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 101 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
number_axial_zone = 15
oxide_thickness = scale_thickness
[]
[]
[Materials]
[thermal]
type = ZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = cladding
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = cladding
temperature = temperature
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_loca_creep_begin = 501 # see Erbacher et al., 1982
temperature_standard_thermal_creep_end = 500
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = cladding
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = StrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average temperature of cladding exterior
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
cladding_blocks = cladding
plenum_boundary_name = 4
external_clad_boundary_name = 2
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_04MPa_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_04MPa/rebeka_singlerod_2d_04MPa_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = rebeka_singlerod.e
[]
[]
[Variables]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '4.e+06 4.e+06' # 10 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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]
[clad]
block = cladding
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'
use_automatic_differentiation = true
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.
translation = 0.1625
boundary = 4
[]
[no_y_midsection]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 101 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
oxide_thickness = scale_thickness
number_axial_zone = 15
use_ad = true
[]
[]
[Materials]
[thermal]
type = ADZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = cladding
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[clad_zrycreep]
type = ADZryAnisoCreepLOCAUpdate
block = cladding
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 = 'fract_beta_phase'
[]
[thermal_expansion]
type = ADZryThermalExpansionMATPROEigenstrain
block = cladding
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = ADStrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ADZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ADZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ADZryCladdingFailure
boundary = 2
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
solve_type = NEWTON
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.e-06
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp]
type = SideAverageValue
boundary = 2
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[top_disp_r_clad] # this is mid height
type = NodalVariableValue
variable = disp_x
nodeid = 0 #coords (0.005375, 0.1625)
[]
[top_disp_r_clad_slice] # this is mid height matched to the 1.5d
type = NodalVariableValue
variable = disp_x
nodeid = 3 #coords (0.005375, 0.1625)
[]
[top_disp_z_clad]
type = NodalVariableValue
variable = disp_y
nodeid = 0 #coords (0.005375, 0.1625)
[]
[stress_xx] # stess in the top Element
type = ElementalVariableValue
variable = stress_xx
elementid = 0
[]
[stress_yy] # stess in the top Element
type = ElementalVariableValue
variable = stress_yy
elementid = 0
[]
[stress_zz] # stess in the top Element
type = ElementalVariableValue
variable = stress_zz
elementid = 0
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
cladding_blocks = cladding
plenum_boundary_name = 4
external_clad_boundary_name = 2
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_04MPa_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_9/IFA_650_9_part2.i)
initial_fuel_density = 10430.0
[GlobalParams]
density = ${initial_fuel_density}
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
restart_file_base = 'IFA_650_9_part1_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.262416
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseBilinear
data_file = average_coolant_htc.csv
axis = 1
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 200412461 200413048'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain
fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hoop_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
strain_zz creep_strain_zz hoop_stress'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[]
[AxialRelocation]
[rel]
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 2.73291E-06 # Addition of the volume to bring the starting total volume to 19cm^3 to begin the transient experiment
burnup_variable = burnup
temperature = temperature
gap_thickness_threshold = 0.00039
axial_relocation_output_options = 'MASS_FRACTION'
mesh_generator = layered1D_mesh
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 199159200
refab_type = 0
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
material_input = fis_gas_released
output = plenum_pressure
refab_time = 199159200
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 1.9e-05
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period1]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = 200412431
end_time = 200413048
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10430.0
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
# axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 1e-3
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
# end_time = 199159200 # End base irradiation
# end_time = 200412431 # Begin Blowdown
end_time = 200413048 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '199159200 200312431 200411431 200412431 200412461 200413048'
time_dt = '1.0e04 1.0e04 10.0 5.0 0.5 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_2'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_2'
[]
[mass_fraction]
type = LineValueSampler
start_point = '0 0.01124 0'
end_point = '0 0.47524 0'
num_points = 30
sort_by = y
variable = layered_mass_fraction
outputs = 'outfile_mass_2'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
exodus = true
execute_on = 'initial timestep_end'
perf_graph = true
[outfile_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_temp_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-07/puzry-07_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-07.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1300. '
y = '1.e+05 1.e+05 2.377e+06' # Linear increase at 0.0759 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1300. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 2.0e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-07
relative_tolerance = 1e-07
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-07_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(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/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_12MPa/rebeka_singlerod_2d_12MPa.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = rebeka_singlerod.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.2e+07 1.2e+07' # 120 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = cladding
add_variables = false
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'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = MaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = MaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.0
translation = 0.1625
boundary = 4
[]
[no_y_midsection]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 101 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
number_axial_zone = 15
oxide_thickness = scale_thickness
[]
[]
[Materials]
[thermal]
type = ZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = cladding
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = cladding
temperature = temperature
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_loca_creep_begin = 501 # see Erbacher et al., 1982
temperature_standard_thermal_creep_end = 500
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = cladding
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = StrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average temperature of cladding exterior
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
cladding_blocks = cladding
plenum_boundary_name = 4
external_clad_boundary_name = 2
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_12MPa_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_14MPa/rebeka_singlerod_2d_14MPa_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = rebeka_singlerod.e
[]
[]
[Variables]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '14.e+06 14.e+06' # 140 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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]
[clad]
block = cladding
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'
use_automatic_differentiation = true
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.
translation = 0.1625
boundary = 4
[]
[no_y_midsection]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 101 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
oxide_thickness = scale_thickness
number_axial_zone = 15
use_ad = true
[]
[]
[Materials]
[converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[thermal]
type = ADZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = cladding
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[clad_zrycreep]
type = ADZryAnisoCreepLOCAUpdate
block = cladding
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 = cladding
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = ADStrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ADZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-06
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp]
type = SideAverageValue
boundary = 2
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[top_disp_r_clad] # this is mid height
type = NodalVariableValue
variable = disp_x
nodeid = 0 #coords (0.005375, 0.1625)
[]
[top_disp_r_clad_slice] # this is mid height matched to the 1.5d
type = NodalVariableValue
variable = disp_x
nodeid = 3 #coords (0.005375, 0.1625)
[]
[top_disp_z_clad]
type = NodalVariableValue
variable = disp_y
nodeid = 0 #coords (0.005375, 0.1625)
[]
[stress_xx] # stess in the top Element
type = ElementalVariableValue
variable = stress_xx
elementid = 0
[]
[stress_yy] # stess in the top Element
type = ElementalVariableValue
variable = stress_yy
elementid = 0
[]
[stress_zz] # stess in the top Element
type = ElementalVariableValue
variable = stress_zz
elementid = 0
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
cladding_blocks = cladding
plenum_boundary_name = 4
external_clad_boundary_name = 2
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_14MPa_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-21/puzry-21.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-21.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 4000. '
y = '1.e+05 1.e+05 5.14e+06' # Linear increase at 0.0168 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 4000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 4000.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-21_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(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/LOCA_ORNL_cladding_burst_tests/analysis/Zr2_1/ornl_zr2_1_aniso.i)
# Simulation ORNL burst tests Zr2_1
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = zr2_ornl_burst_test_mesh.e
[]
[]
[Variables]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func] # only 10 inches of the rod are within the heated zone (cf. Terrani email)
type = PiecewiseBilinear
data_file = temperature_ornl_zr2_1.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
data_file = pressure_inner_ornl_zr2_1.csv
scale_factor = 1.e+06
format = columns
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 400. '
y = '0.1 0.1 ' # atmospheric pressure
scale_factor = 1.e+06
[]
# 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]
[clad]
use_automatic_differentiation = true
block = cladding
add_variables = true
strain = FINITE
decomposition_method = TaylorExpansion
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz hoop_stress'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 4'
preset = false
[]
[no_y_top]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
preset = false
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[mid_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 2 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
type = ADZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ADZryElasticityTensor
block = cladding
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[clad_zrycreep]
type = ADZryAnisoCreepLOCAUpdate
block = cladding
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 = cladding
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = ADStrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[phase_converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[oxidation]
type = ADZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.004875
clad_outer_radius = 0.005580
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
#use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[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 = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 400.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[pressure_inner]
type = FunctionValuePostprocessor
function = inner_pressure_func
execute_on = 'initial timestep_end'
[]
[pressure_outer]
type = FunctionValuePostprocessor
function = outer_pressure_func
execute_on = 'initial timestep_end'
[]
[ave_clad_temp]
type = SideAverageValue
boundary = 2
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
execute_on = 'initial timestep_end'
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
execute_on = 'initial timestep_end'
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
execute_on = 'initial timestep_end'
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
execute_on = 'initial timestep_end'
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
execute_on = 'initial timestep_end'
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
execute_on = 'initial timestep_end'
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
execute_on = 'initial timestep_end'
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[mid_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 22
[]
[stress_xx_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_xx
elementid = 19
[]
[stress_yy_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_yy
elementid = 19
[]
[stress_zz_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_zz
elementid = 19
[]
[strain_zz_midplane] # strain in the mid Element
type = ElementalVariableValue
variable = strain_zz
elementid = 19
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
plenum_boundary_name = 4
cladding_blocks = cladding
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
perf_graph = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 20
[]
[chkfile]
type = CSV
file_base = ornl_zr2_1_aniso_chkfile
show = 'pressure_inner max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-25/puzry-25.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-25.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 6000. '
y = '1.e+05 1.e+05 8.75e+06' # Linear increase at 0.0173 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 6000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 6000.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-25_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(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/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part3_gas_communication.i)
[GlobalParams]
density = 10452.96
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
restart_file_base = 'IFA_650_4_part2_gas_communication_checkpoint2_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
slices_within_upper_plenum = 3
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_fuel_radius]
order = FIRST
family = LAGRANGE
[]
[gap_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_moles]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_mole_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_volume]
order = CONSTANT
family = MONOMIAL
[]
[plenum_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[total_moles]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[layered_maximum_fuel_radius]
type = SpatialUserObjectAux
block = fuel
user_object = layered_maximum_fuel_radius
variable = layered_maximum_fuel_radius
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_pressure]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
variable = gap_layer_pressure
output_option = 'LAYER_PRESSURE'
execute_on = 'final timestep_end'
[]
[gap_layer_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_MOLES'
variable = gap_layer_moles
execute_on = 'timestep_end'
[]
[gap_layer_mole_rate]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'PLENUM_MOLE_RATE'
variable = gap_layer_mole_rate
execute_on = 'timestep_end'
[]
[gap_layer_temperature]
type = SpatialUserObjectAux
user_object = gap_layer_temperature
variable = gap_layer_temperature
execute_on = 'timestep_end'
[]
[gap_layer_volume]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_VOLUME'
variable = gap_layer_volume
execute_on = 'timestep_end'
[]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_END'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[gas_th_cond]
type = MaterialRealAux
variable = gap_thermal_conductivity
property = gap_conductivity
boundary = 10
execute_on = 'initial linear'
[]
[]
[AxialRelocation]
[relocation]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 3.17755E-06 # Addition of the volume to bring the starting total volume to 21.5cm^3 to begin the transient experiment
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = 'MASS_FRACTION PACKING_FRACTION'
use_axial_gas_communication = true
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_gas_types = 'He Ar'
initial_fractions = '0.05 0.95'
# initial_moles = initial_moles
# gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
output_gas_mixture = true
outputs = GasMixture
execution_order_group = -2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
incremental_calculation = true
execute_on = 'INITIAL LINEAR'
axial_gas_communication = axial_gas_communication
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
#axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
#hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10452.96
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'gap_layer_pressure_max < 101325.01'
execute_on = 'TIMESTEP_END'
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[layered_fuel_average]
type = LayeredSideAverage
variable = temperature
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
use_displaced_mesh = false
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_temperature]
type = LayeredGasGapTemperatureUserObject
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
gap_temp = gap_value
variable = temperature
boundary = '5'
distance = pt_distance
execute_on = 'INITIAL TIMESTEP_BEGIN'
execution_order_group = -1
[]
[cladding_failure_status]
type = LayeredSideAverage
variable = burst
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
execute_on = 'TIMESTEP_BEGIN'
[]
[layered_maximum_fuel_radius]
type = LayeredNodalExtremeValue
variable = 'outer_fuel_radius'
direction_min = 0.0
direction_max = 0.48
num_layers = 30
direction = y
boundary = 10
value_type = max
execute_on = 'INITIAL TIMESTEP_END'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
distance = pt_distance
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
gas_mixture = gas_mixture_thermal_contact
initial_pressure = 2.0e6
equilibrium_pressure = 7.5e5
material_input = 'fis_gas_released'
execute_on = 'initial timestep_end'
debug_output = true
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[plenum_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial TIMESTEP_BEGIN'
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
[]
[gap_layer_pressure_min]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = min
execute_on = 'initial timestep_end'
[]
[gap_layer_pressure_max]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = max
execute_on = 'initial timestep_end'
[]
[gap_layer_moles]
type = ElementExtremeValue
value_type = max
variable = gap_layer_moles
execute_on = 'initial timestep_end'
[]
[plenum_mole_rate]
type = ElementAverageValue
variable = gap_layer_mole_rate
execute_on = 'initial timestep_end'
[]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dt = .1
end_time = 172489651 # End
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_3'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_3'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
exodus = true
[exodus3]
type = Exodus
file_base = IFA_650_4_gas_part3_out
execute_on = 'initial timestep_end'
[]
[checkpoint3]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_3]
type = CSV
#execute_on = 'FINAL'
#create_final_symlink = true
file_base = 'clad3/new'
[]
[outfile_temp_3]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_3]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[GasMixture]
type = CSV
file_base = 'GasMixture/'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-01/puzry-01.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-01.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 7.4e+05' # Linear increase at 0.0064 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700.0
temperature_loca_creep_begin = 900.0
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.0
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2000.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-01_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-03/puzry-03.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-03.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 7.3e+05' # Linear increase at 0.0063 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2000.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-03_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_01MPa/rebeka_singlerod_2d_01MPa_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = rebeka_singlerod.e
[]
[]
[Variables]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+06 1.e+06' # 10 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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]
[clad]
block = cladding
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'
use_automatic_differentiation = true
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.
translation = 0.1625
boundary = 4
[]
[no_y_midsection]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 101 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
oxide_thickness = scale_thickness
number_axial_zone = 15
use_ad = true
[]
[]
[Materials]
[thermal]
type = ADZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = cladding
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[clad_zrycreep]
type = ADZryAnisoCreepLOCAUpdate
block = cladding
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 = 'fract_beta_phase'
[]
[thermal_expansion]
type = ADZryThermalExpansionMATPROEigenstrain
block = cladding
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = ADStrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ADZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ADZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ADZryCladdingFailure
boundary = 2
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
solve_type = NEWTON
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.e-06
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp]
type = SideAverageValue
boundary = 2
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[top_disp_r_clad] # this is mid height
type = NodalVariableValue
variable = disp_x
nodeid = 0 #coords (0.005375, 0.1625)
[]
[top_disp_r_clad_slice] # this is mid height matched to the 1.5d
type = NodalVariableValue
variable = disp_x
nodeid = 3 #coords (0.005375, 0.1625)
[]
[top_disp_z_clad]
type = NodalVariableValue
variable = disp_y
nodeid = 0 #coords (0.005375, 0.1625)
[]
[stress_xx] # stess in the top Element
type = ElementalVariableValue
variable = stress_xx
elementid = 0
[]
[stress_yy] # stess in the top Element
type = ElementalVariableValue
variable = stress_yy
elementid = 0
[]
[stress_zz] # stess in the top Element
type = ElementalVariableValue
variable = stress_zz
elementid = 0
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
cladding_blocks = cladding
plenum_boundary_name = 4
external_clad_boundary_name = 2
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_01MPa_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_4/IFA_650_4_part2_gas_communication.i)
[GlobalParams]
density = 10452.96
initial_porosity = 0.048
order = SECOND
family = LAGRANGE
displacements = disp_x
temperature = temperature
energy_per_fission = 3.2e-11 #J/fission
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
acceptable_multiplier = 10
restart_file_base = 'IFA_650_4_part1_gas_communication_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 30
slices_within_upper_plenum = 3
pellet_outer_radius = 4.565e-3
clad_gap_width = 0.085e-3
clad_thickness = 0.725e-3
fuel_height = 0.480
plenum_height = 0.291185
pellet_mesh_density = customize
clad_mesh_density = customize
nx_p = 11
nx_c = 5
[]
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[temperature]
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
data_file = power_history.csv
scale_factor = 1.0
format = columns
[]
[axial_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors.csv
axis = 1
scale_factor = 1
[]
[pressure_ramp]
type = PiecewiseLinear
data_file = coolant_pressure.csv
scale_factor = 1
format = columns
[]
[average_htc]
type = PiecewiseLinear
data_file = average_coolant_htc.csv
format = columns
scale_factor = 1
[]
[forced_times]
type = PiecewiseLinear
data_file = timestep_limiting.csv
scale_factor = 1
format = columns
[]
[heat_sink_temperature]
type = PiecewiseBilinear
data_file = heater_temp.csv
scale_factor = 1
axis = 1
[]
[clad_outer_temperature]
type = PiecewiseBilinear
data_file = clad_surface_temp.csv
scale_factor = 1
axis = 1
[]
[heat_transfer_mode]
type = PiecewiseConstant
x = '-200 172489073 172489661'
y = '9 9 8 '
direction = 'right'
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_thermal_conductivity]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_clad_radius]
order = CONSTANT
family = MONOMIAL
[]
[layered_maximum_fuel_radius]
order = FIRST
family = LAGRANGE
[]
[gap_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_moles]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_mole_rate]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_temperature]
order = CONSTANT
family = MONOMIAL
[]
[gap_layer_volume]
order = CONSTANT
family = MONOMIAL
[]
[plenum_layer_pressure]
order = CONSTANT
family = MONOMIAL
[]
[total_moles]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
extra_vector_tags = 'ref'
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
strain = finite
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_swelling_strain fuel_relocation_strain axial_relocation_eigenstrain'
decomposition_method = EigenSolution
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[clad]
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = fuel_pin_geometry
strain = finite
out_of_plane_pressure_function = clad_axial_pressure
block = clad
eigenstrain_names = 'clad_thermal_strain clad_irradiation_strain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_zz creep_strain_zz'
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
[]
[]
[]
[]
[Burnup]
[burnup]
block = fuel
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
num_radial = 80
num_axial = 11
fuel_pin_geometry = fuel_pin_geometry
fuel_volume_ratio = 1.0
order = CONSTANT
family = MONOMIAL
RPF = RPF
isotopes = 'U235 U238 Pu239 Pu240 Pu241 Pu242'
isotope_fractions = '0.035 0.965 0 0 0 0'
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
block = clad
variable = fast_neutron_flux
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
block = clad
variable = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
variable = grain_radius
temperature = temperature
execute_on = linear
[]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[effective_creep_strain]
type = MaterialRealAux
block = clad
variable = effective_creep_strain
property = effective_creep_strain
execute_on = 'timestep_end'
[]
[layered_maximum_fuel_radius]
type = SpatialUserObjectAux
block = fuel
user_object = layered_maximum_fuel_radius
variable = layered_maximum_fuel_radius
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_pressure]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
variable = gap_layer_pressure
output_option = 'LAYER_PRESSURE'
execute_on = 'final timestep_end'
[]
[gap_layer_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_MOLES'
variable = gap_layer_moles
execute_on = 'timestep_end'
[]
[gap_layer_mole_rate]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'PLENUM_MOLE_RATE'
variable = gap_layer_mole_rate
execute_on = 'timestep_end'
[]
[gap_layer_temperature]
type = SpatialUserObjectAux
user_object = gap_layer_temperature
variable = gap_layer_temperature
execute_on = 'timestep_end'
[]
[gap_layer_volume]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'LAYER_VOLUME'
variable = gap_layer_volume
execute_on = 'timestep_end'
[]
[total_moles]
type = AxialGasCommunicationAux
axial_gas_communication = axial_gas_communication
output_option = 'TOTAL_MOLES'
variable = total_moles
execute_on = 'TIMESTEP_END'
[]
[fract_bphase]
type = MaterialRealAux
block = clad
variable = fract_beta_phase
property = fract_beta_phase
execute_on = 'initial linear'
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 2
variable = oxide_thickness
property = oxide_scale_thickness
execute_on = 'initial linear'
[]
[hasburst]
type = MaterialRealAux
boundary = 2
variable = burst
property = failed
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
boundary = 10
property = gap_conductance
variable = gap_conductance
execute_on = 'initial linear'
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
execute_on = 'initial linear'
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[gas_th_cond]
type = MaterialRealAux
variable = gap_thermal_conductivity
property = gap_conductivity
boundary = 10
execute_on = 'initial linear'
[]
[]
[AxialRelocation]
[relocation]
mesh_generator = layered1D_mesh
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy
penetration_variable = penetration
clad_inner_volume_addition = 3.17755E-06 # Addition of the volume to bring the starting total volume to 21.5cm^3 to begin the transient experiment
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = 'MASS_FRACTION PACKING_FRACTION'
use_axial_gas_communication = true
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 2
variable = temperature
heat_transfer_mode = heat_transfer_mode
heat_transfer_coefficient = average_htc # Calculated from an initial simulation of the base irradiation using the inlet_pressure, inlet_massflux, and inlet_temperature commented out below.
inlet_temperature = heat_sink_temperature # K
effective_emissivity = 0.75
# inlet_temperature = 580
# inlet_pressure = 15.3e6 # Pa
# inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.01075 # m
rod_pitch = 1.26e-2 # m
compute_enthalpy = false
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
output_properties = 'coolant_channel_htype coolant_channel_hmode'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e7
formulation = kinematic
model = frictionless
[]
[]
[ThermalContact]
[thermal_contact]
type = GasGapHeatTransfer
variable = temperature
primary = 5
secondary = 10
initial_gas_types = 'He Ar'
initial_fractions = '0.05 0.95'
# initial_moles = initial_moles
# gas_released = fis_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
roughness_coef = 3.2
refab_gas_types = 'He Ar'
refab_fractions = '0.05 0.95'
refab_time = 172387800
refab_type = 0
output_gas_mixture = true
outputs = GasMixture
execution_order_group = -2
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 2
function = pressure_ramp
factor = 1.0
[]
[]
[clad_outer_temp]
type = FunctionDirichletBC
boundary = 2
variable = temperature
function = clad_outer_temperature
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 2.0e6
startup_time = 0
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = 'clad_volume pellet_volume'
output = plenum_pressure
refab_time = 172387800
refab_pressure = 4.0e6
refab_temperature = 295.0
refab_volume = 2.15e-05
incremental_calculation = true
execute_on = 'INITIAL LINEAR'
axial_gas_communication = axial_gas_communication
[]
[]
[]
[LayeredPlenumTemperature]
[plenum_temp]
boundary = 5
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
inner_surfaces = '5'
outer_surfaces = '10'
temperature = temperature
[]
[]
[Controls]
[period1]
type = TimePeriod
disable_objects = 'BCs/clad_outer_temp'
start_time = 172489043
end_time = 172489661
[]
[]
[Materials]
[fuel_thermal]
type = UO2Thermal
block = fuel
thermal_conductivity_model = STAICU
hbs_porosity_correction = KAMPF
model_hbs_formation = true
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[relocation]
type = UO2RelocationEigenstrain
block = fuel
burnup_function = burnup
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
fuel_pin_geometry = fuel_pin_geometry
burnup_relocation_stop = 0.024
relocation_activation1 = 5000.0
relocation_model = ESCORE_modified
eigenstrain_name = fuel_relocation_strain
[]
[fuel_thermal_strain]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 10.0e-6
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = fuel
burnup_function = burnup
initial_fuel_density = 10452.96
eigenstrain_name = fuel_swelling_strain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
temperature = temperature
burnup_function = burnup
grain_radius = grain_radius
transient_option = MICROCRACKING_BURNUP
diff_coeff_option = TURNBULL_D1_D2
gbs_model = true
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
temperature = temperature
rod_ave_lin_pow = power_history
#axial_relocation_object = axial_relocation
crumbling_scale_factor = 0.0001
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
burnup_function = burnup
initial_grain_radius = 5.0e-6
[]
[HBS]
type = HighBurnupStructureFormation
block = fuel
burnup_function = burnup
temperature = temperature
output_properties = 'hbs_volume_fraction'
outputs = 'exodus'
[]
[clad_elasticity_tensor]
type = ZryElasticityTensor
block = clad
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zrycreep'
block = clad
[]
[zrycreep]
type = ZryCreepLOCAUpdate
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
max_inelastic_increment = 5e-4
zircaloy_material_type = stress_relief_annealed
block = clad
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[irradiation_swelling]
type = ZryIrradiationGrowthEigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
zircaloy_material_type = stress_relief_annealed
eigenstrain_name = clad_irradiation_strain
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temperature
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 4.65e-03
clad_outer_radius = 5.375e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = cathcart
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = plastic_instability
hoop_stress = hoop_stress
#hoop_creep_strain = creep_strain_zz
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[clad_thermal]
type = ZryThermal
block = clad
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 10452.96
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6551.0
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
execute_on = timestep_end
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[layered_fuel_average]
type = LayeredSideAverage
variable = temperature
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
use_displaced_mesh = false
execute_on = 'TIMESTEP_BEGIN'
[]
[gap_layer_temperature]
type = LayeredGasGapTemperatureUserObject
direction = y
num_layers = 33
fuel_pin_geometry = fuel_pin_geometry
gap_temp = gap_value
variable = temperature
boundary = '5'
distance = pt_distance
execute_on = 'INITIAL TIMESTEP_BEGIN'
execution_order_group = -1
[]
[cladding_failure_status]
type = LayeredSideAverage
variable = burst
direction = y
num_layers = 30
boundary = 2
direction_min = 0
direction_max = .48
execute_on = 'TIMESTEP_BEGIN'
[]
[layered_maximum_fuel_radius]
type = LayeredNodalExtremeValue
variable = 'outer_fuel_radius'
direction_min = 0.0
direction_max = 0.48
num_layers = 30
direction = y
boundary = 10
value_type = max
execute_on = 'INITIAL TIMESTEP_END'
[]
[axial_gas_communication]
type = AxialGasCommunication
direction = y
num_layers = 33
distance = pt_distance
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain_fuel = fuel_strain_yy
out_of_plane_strain_cladding = cladding_strain_yy
layered_clad_internal_volume = layered_clad_internal_volume
layered_maximum_clad_radius = layered_maximum_clad_radius
layered_maximum_fuel_radius = layered_maximum_fuel_radius
layered_fuel_temperature = layered_fuel_average
layered_gas_gap_temperature = gap_layer_temperature
axial_relocation_object = axial_relocation
cladding_failure_status = cladding_failure_status
gas_mixture = gas_mixture_thermal_contact
initial_pressure = 2.0e6
material_input = 'fis_gas_released'
execute_on = 'initial timestep_end'
debug_output = true
[]
[]
[Postprocessors]
[ave_temp_interior]
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temperature
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[pellet_volume_2]
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temperature
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial linear'
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasGeneratedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasedSifgrsPostprocessor
block = fuel
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_grain]
type = LayeredElementIntegralFisGasGrainSifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fis_gas_boundary]
type = LayeredElementIntegralFisGasBoundarySifgrsPostprocessor
block = fuel
outputs = exodus
fuel_pin_geometry = fuel_pin_geometry
[]
[fission_gas_release]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[average_coolant_htc]
type = LayeredSideAverageValuePostprocessor
boundary = 2
variable = coolant_htc
execute_on = 'initial linear'
fuel_pin_geometry = fuel_pin_geometry
[]
[average_burnup]
type = RodAverageBurnup
burnup_function = burnup
[]
[temp_clad_max]
type = NodalExtremeValue
block = clad
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = NodalExtremeValue
block = fuel
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[betaph_fract_max]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[timestep_material]
type = MaterialTimeStepPostprocessor
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = clad
[]
[zry_burst_opening_area]
type = ZryBurstOpening
fuel_pin_geometry = fuel_pin_geometry
peak_hoop_strain = peak_hoop_strain
estimate = limiting
opening_shape = rectangle
output = area
[]
[plenum_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial TIMESTEP_BEGIN'
component = 0
fuel_pin_geometry = fuel_pin_geometry
out_of_plane_strain = strain_yy
[]
[gap_layer_pressure_min]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = min
execute_on = 'initial timestep_end'
[]
[gap_layer_pressure_max]
type = ElementExtremeValue
variable = gap_layer_pressure
value_type = max
execute_on = 'initial timestep_end'
[]
[gap_layer_moles]
type = ElementExtremeValue
value_type = max
variable = gap_layer_moles
execute_on = 'initial timestep_end'
[]
[plenum_mole_rate]
type = ElementAverageValue
variable = gap_layer_mole_rate
execute_on = 'initial timestep_end'
[]
[total_moles]
type = ElementExtremeValue
value_type = max
variable = total_moles
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Dampers]
[limitT]
type = BoundingValueNodalDamper
variable = temperature
max_value = 3200.0
min_value = 0.0
[]
[limitX]
type = MaxIncrement
max_increment = 1e-5
variable = disp_x
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 50
l_tol = 1e-3
nl_max_its = 100
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
dtmax = 5e5
dtmin = 1e-5
end_time = 172489661 # End
[TimeStepper]
type = IterationAdaptiveDT
dt = 200
timestep_limiting_postprocessor = timestep_material
optimal_iterations = 20
iteration_window = 4
linear_iteration_ratio = 100
timestep_limiting_function = forced_times
force_step_every_function_point = true
max_function_change = 2000
time_t = '172387800 172388043 172488043 172489043 172489073 172489661'
time_dt = '1.0e04 1.0e04 10.0 5.0 3.0 5.0'
[]
[]
[VectorPostprocessors]
[clad_radial_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'outfile_2'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temperature
boundary = 2
sort_by = y
outputs = 'outfile_temp_2'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
csv = true
color = false
perf_graph = true
exodus = true
[exodus2]
type = Exodus
file_base = IFA_650_4_gas_part2_out
execute_on = 'initial timestep_end'
[]
[checkpoint2]
type = Checkpoint
time_step_interval = 1
num_files = 1
[]
[outfile_2]
type = CSV
#execute_on = 'FINAL'
#create_final_symlink = true
file_base = 'clad2/new'
[]
[outfile_temp_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[outfile_mass_2]
type = CSV
execute_on = 'FINAL'
create_final_symlink = true
[]
[GasMixture]
type = CSV
file_base = 'GasMixture/'
[]
[]
(assessment/LWR/validation/LOCA_Studsvik/analysis/rod_196/Studsvik_196_part2_1p5d_fr_ffrd.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'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
restart_file_base = 'Studsvik_196_part1_1p5d_fr_ffrd_checkpoint_cp/LATEST'
[]
[Mesh]
coord_type = RZ
[layered1D_mesh]
type = Layered1DMeshGenerator
slices_per_block = 10
clad_gap_width = 80e-6
plenum_height = 0.0393576
pellet_outer_radius = 3.92e-3
clad_thickness = 0.57e-3
fuel_height = 0.2606424
# nx_c = 2
# nx_p = 11
elem_type = EDGE3
[]
patch_update_strategy = auto
patch_size = 10 # For contact algorithm
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temperature]
[]
[]
[AuxVariables]
# Define auxilary variables
[strain_yy_0]
order = CONSTANT
family = MONOMIAL
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[grain_radius]
block = fuel
[]
[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
[]
[tangential_contact_pressure_aux]
block = fuel
[]
[]
[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
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = pressure_ramp
coolant_pressure_scaling_factor = 1.0
fuel_pin_geometry = fuel_pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics]
[SolidMechanics]
[Layered1D]
[fuel]
block = fuel
add_variables = true
add_scalar_variables = true
strain = FINITE
out_of_plane_strain_name = strain_yy
eigenstrain_names = 'fuel_thermal_eigenstrain fuel_volumetric_eigenstrain axial_relocation_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx hoop_stress creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
fuel_pin_geometry = fuel_pin_geometry
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
decomposition_method = EigenSolution
temperature = temperature
out_of_plane_pressure_function = fuel_axial_pressure
layer_friction_user_object = 1DFriction_secondary
[]
[clad]
block = clad
add_variables = true
add_scalar_variables = true
strain = FINITE
out_of_plane_strain_name = strain_yy
eigenstrain_names = 'clad_thermal_eigenstrain clad_irradiation_eigenstrain'
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress strain_xx hoop_stress creep_strain_zz strain_zz'
extra_vector_tags = 'ref'
fuel_pin_geometry = fuel_pin_geometry
group_scalar_vars_in_reference_residual = true
mesh_generator = layered1D_mesh
decomposition_method = EigenSolution
temperature = temperature
out_of_plane_pressure_function = clad_axial_pressure
layer_friction_user_object = 1DFriction_primary
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temperature
extra_vector_tags = 'ref'
block = fuel
burnup_function = burnup
axial_relocation_object = axial_relocation
[]
[]
[Burnup]
[burnup]
block = fuel
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
[tangential_contact_pressure_aux]
type = SpatialUserObjectAux
variable = tangential_contact_pressure_aux
user_object = 1DFriction_secondary
block = fuel
execute_on = 'TIMESTEP_END'
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors
factor = 3e13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = fuel
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
[]
[Pressure]
[coolantPressure]
boundary = '2'
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]
[layered_average_hoop_strain]
type = LayeredAverage
block = clad
num_layers = 10
direction = y
variable = strain_zz
[]
[cladding_strain_yy]
type = LayeredAverage
block = clad
num_layers = 11
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[fuel_strain_yy]
type = LayeredAverage
block = fuel
num_layers = 10
direction = y
variable = strain_yy
execute_on = 'initial timestep_end'
[]
[1DContactStressOOP_fuel]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.01306
direction_max = 0.24761028
block = fuel
execute_on = 'LINEAR NONLINEAR'
[]
[1DContactStressOOP_cladding]
type = Layered1DContactInterfaceStress
direction = y
stress_name = stress
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.01306
direction_max = 0.24761028
block = clad
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_secondary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = pellet_outer_radial_surface
num_layers = 10
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = true
tangential_pressure = tangential_contact_pressure_aux
friction_coefficient = 0.2
thickness = 0.02606424
penalty_factor = 1.0e13
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.01306
direction_max = 0.24761028
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
[1DFriction_primary]
type = Layered1DFrictionalForce
force_postaux = true
contact_pressure = contact_pressure
direction = y
boundary = clad_inside_right
num_layers = 10
# If we do not provide the numbers below, it will look at the mesh, in all blocks to set the layer number. Then, it will
# be wrong because the cladding has more height and won't be able to identify layers in the fuel.
direction_min = 0.0165094
direction_max = 0.24761028
interface_oop_stress_provider_fuel = 1DContactStressOOP_fuel
interface_oop_stress_provider_cladding = 1DContactStressOOP_cladding
is_secondary_side = false
secondary_side_frictional_user_object = 1DFriction_secondary
friction_coefficient = 0.2
thickness = 0.02606424
penalty_factor = 1.0e13
scalar_var_name_base_fuel = scalar_strain_yy_fuel
scalar_num_variable_fuel = 10
scalar_var_name_base_cladding = scalar_strain_yy_clad
scalar_num_variable_cladding = 10
execute_on = 'LINEAR NONLINEAR'
[]
[terminator]
type = Terminator
expression = 'max_axial_relocation_strain > 0.25'
[]
[]
[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]
[fuel_dispersal]
type = UO2Dispersal
block = fuel
axial_relocation_object = axial_relocation
layered_average_burnup = layered_average_burnup
layered_average_hoop_strain = layered_average_hoop_strain
dispersal_model = ONE_MM_TWO_PERCENT_STRAIN
[]
# Define material behavior models and input material property data
[fuel_thermal] # temperature and burnup dependent thermal properties of UO2 (BISON kernel)
type = UO2Thermal
block = fuel
thermal_conductivity_model = NFIR
temperature = temperature
burnup_function = burnup
axial_relocation_object = axial_relocation
gap_thermal_conductivity = layered_average_gap_conductivity
[]
[fuel_elasticity_tensor]
type = UO2IsotropicDamageElasticityTensor
block = fuel
fragmentation_model = BARANI
rod_ave_lin_pow = power_history
temperature = temperature
axial_relocation_object = axial_relocation
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'fuel_creep'
block = fuel
[]
[fuel_creep]
type = UO2CreepUpdate
block = fuel
temperature = temperature
fission_rate = fission_rate
initial_grain_radius = 10.0e-6
oxygen_to_metal_ratio = 2.0
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
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 = fuel
temperature = temperature
burnup_function = burnup
initial_fuel_density = 10431.0
eigenstrain_name = fuel_volumetric_eigenstrain
[]
[fission_gas_release]
type = UO2Sifgrs
block = fuel
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
hoop_stress = hoop_stress
hoop_creep_strain = creep_strain_zz
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temperature
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[]
[VectorPostprocessors]
[cladding_outer]
type = NodalValueSampler
boundary = 5
variable = disp_x
sort_by = y
[]
[]
[AxialRelocation]
[relocation]
rod_ave_lin_pow = power_history
axial_direction = y
fuel_blocks = fuel
clad_blocks = clad
contact_pressure_variable = contact_pressure
out_of_plane_strain_variable = strain_yy_0
penetration_variable = penetration
clad_inner_volume_addition = 0
burnup_variable = burnup
temperature = temperature
axial_relocation_output_options = MASS_FRACTION
mesh_generator = layered1D_mesh
# CHANGE
gap_thickness_threshold = 0.000050
[]
[]
[Postprocessors]
[volume_fuel_dispersed]
type = LayeredElementIntegralMaterialProperty
block = fuel
mat_prop = dispersed
fuel_pin_geometry = fuel_pin_geometry
execute_on = 'initial timestep_end'
[]
[mass_fuel_dispersed]
type = ParsedPostprocessor
pp_names = volume_fuel_dispersed
expression = '10431 * volume_fuel_dispersed'
execute_on = 'initial timestep_end'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
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 = fuel
execute_on = 'linear'
[]
[fission_gas_grain]
type = ElementIntegralFisGasGrainSifgrs
block = fuel
outputs = exodus
execute_on = 'linear'
[]
[fission_gas_boundary]
type = ElementIntegralFisGasBoundarySifgrs
block = fuel
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 = fuel
[]
[max_fuel_temp]
type = NodalExtremeValue
block = fuel
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
[]
[max_axial_relocation_strain]
type = ElementExtremeValue
value_type = max
variable = axial_relocation_strain
block = fuel
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
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[volume_pulverized]
type = ElementIntegralMaterialProperty
mat_prop = pulverized
block = fuel
[]
[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
layered = true
fuel_pellet_blocks = 'fuel'
fuel_pin_geometry = fuel_pin_geometry
[]
[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/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/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-30/puzry-30_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-30.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1300. '
y = '1.e+05 1.e+05 7.99e+06' # Linear increase at 0.2630 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1300. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-07
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-30_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_overstress_overstrain.i)
#--------------------------------------------------------------------------------
#
# This test case is prepared to test the LOCA failure (burst) criterion for Zirconium alloy
# using the ZryCladdingFailure and ZryCreepLOCAUpdate materials.
#
# - Geometry:
# ri = 0.005 m
# ro = 0.0055 m
# H = 0.01 m
#
# - Single element
#
# - Temperature = 1000 K
#
# - Boundary conditions:
# pressure at inner surface (pi) = from 1 to 10 MPa in 10 s
# pressure at outer surface (po) = 0.1 MPa
#
# Cladding failure is considered to occur when either a limiting (burst) stress or a limiting
# hoop strain is exceeded (criterion = 4, i.e., combined overstress and overstrain criterion).
#
# At 1000 K, with Zry in 100% alpha phase and no oxidation considered, the burst stress is
# sigma_burst = 830*exp(-0.001*1000) = 305.34 MPa
# which is calculated correctly by the program.
#
# The limiting true creep hoop strain is 33.6%
#
# For this case, failure occurs at the attainment of the limiting strain.
#
#--------------------------------------------------------------------------------
[Mesh]
coord_type = RZ
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
xmin = 0.005
xmax = 0.0055
ymin = 0.0
ymax = 0.01
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.
[]
[]
[AuxVariables]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
initial_condition = .334
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0 10'
y = '1000 1000'
[]
[inner_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 10.0'
[]
[outer_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = 0
add_variables = true
strain = FINITE
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[hoop_creep_strain]
type = FunctionAux
variable = hoop_creep_strain
function = '.334+t'
[]
# NOTE: a function corresponding to the strain is applied to test the failure
# model. In reality, one would couple the displacements and the calculated
# strain as shown, but has been commented out.
# [hoop_creep_strain]
# type = RankTwoScalarAux
# rank_two_tensor = creep_strain
# variable = hoop_creep_strain
# scalar_type = HoopStress
# execute_on = timestep_end
# []
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = 0
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = right #3
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = right #3
execute_on = timestep_end
[]
[]
[BCs]
[outersurface]
type = Pressure
boundary = right
variable = disp_x
factor = 1.0e5
function = outer_pressure_function
[]
[innersurface]
type = Pressure
boundary = left
variable = disp_x
factor = 1.0e6
function = inner_pressure_function
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 'top bottom'
value = 0.0
[]
[temp_bc_1]
type = FunctionDirichletBC
variable = temp
boundary = 'left right top bottom'
function = temperature_function
[]
[]
[Materials]
[phase]
type = ZrPhase
block = 0
temperature = temp
numerical_method = 2
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = 0
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = 0
temperature = temp
model_thermal_creep = true
model_irradiation_creep = false
model_primary_creep = false
[]
[clad_density]
type = StrainAdjustedDensity
block = 0
strain_free_density = 6500
[]
[thermal]
type = HeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 100.
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = right #3
failure_criterion = combined_overstress_and_overstrain
hoop_stress = hoop_stress
hoop_creep_strain = hoop_creep_strain
temperature = temp
fraction_beta_phase = fract_beta_phase
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 0.003
dt = 0.001
[]
[Postprocessors]
[hoop_stress]
type = ElementalVariableValue
elementid = 0
variable = hoop_stress
[]
[hoop_creep_strain]
type = ElementalVariableValue
elementid = 0
variable = hoop_creep_strain
[]
[betaph_fract]
type = ElementalVariableValue
elementid = 0
variable = fract_beta_phase
[]
[burst_stress]
type = ElementalVariableValue
elementid = 0
variable = burst_stress
[]
[burst]
type = ElementalVariableValue
elementid = 0
variable = burst
[]
[]
[Outputs]
exodus = true
[console]
type = Console
max_rows = 25
[]
[]
(test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_plastic_instability.i)
#--------------------------------------------------------------------------------
#
# This test case is prepared to test the LOCA failure (burst) criterion for Zirconium alloy
# using the ZryCladdingFailure and ZryCreepLOCAUpdate materials.
#
# - Geometry:
# ri = 0.005 m
# ro = 0.0055 m
# H = 0.01 m
#
# - Single element
#
# - Temperature = 1000 K
#
# - Boundary conditions:
# pressure at inner surface (pi) = from 1 to 10 MPa in 10 s
# pressure at outer surface (po) = 0.1 MPa
#
# Cladding failure is considered to occur when either a limiting creep rate is exceeded
# (criterion = 1, i.e., plastic instability criterion).
#
#
# Failure occurs at the attainment of the limiting creep rate, which is
# lim_creep_rate = 100 h^-1 ~0.0278 s^-1.
#
#--------------------------------------------------------------------------------
[Mesh]
coord_type = RZ
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
xmin = 0.005
xmax = 0.0055
ymin = 0.0
ymax = 0.01
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0 10'
y = '1000 1000'
[]
[inner_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 10.0'
[]
[outer_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = 0
add_variables = true
strain = FINITE
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = right #3
execute_on = timestep_end
[]
[]
[BCs]
[outersurface]
type = Pressure
boundary = right
variable = disp_x
factor = 1.0e5
function = outer_pressure_function
[]
[innersurface]
type = Pressure
boundary = left
variable = disp_x
factor = 1.0e6
function = inner_pressure_function
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 'top bottom'
value = 0.0
[]
[temp_bc_1]
type = FunctionDirichletBC
variable = temp
boundary = 'left right top bottom'
function = temperature_function
[]
[]
[Materials]
[phase]
type = ZrPhase
block = 0
temperature = temp
numerical_method = 2
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = 0
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = 0
temperature = temp
model_thermal_creep = true
model_irradiation_creep = false
model_primary_creep = false
[]
[clad_density]
type = StrainAdjustedDensity
block = 0
strain_free_density = 6500
[]
[thermal]
type = HeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 100.
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = right #3
failure_criterion = plastic_instability
effective_strain_rate_creep = creep_rate
temperature = temp
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 8.9
dt = 0.1
[]
[Postprocessors]
[creep_rate]
type = ElementalVariableValue
elementid = 0
variable = creep_rate
[]
[burst]
type = ElementalVariableValue
elementid = 0
variable = burst
[]
[]
[Outputs]
exodus = true
[console]
type = Console
max_rows = 25
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-24/puzry-24_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-24.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 6000. '
y = '1.e+05 1.e+05 9.05e+06' # Linear increase at 0.0179 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 6000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-07
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-24_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-05/puzry-05_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-05.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 7.2e+05' # Linear increase at 0.062 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-07
relative_tolerance = 1e-07
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-05_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(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_PUZRY_cladding_burst_tests/analysis/puzry-30/puzry-30.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-30.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1300. '
y = '1.e+05 1.e+05 7.99e+06' # Linear increase at 0.2630 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1300. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 1300.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-30_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(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
[]
(test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/zry_clad_failure_rupture_temperature.i)
#--------------------------------------------------------------------------------
#
# This test case is prepared to test the LOCA failure (burst) criterion for Zirconium alloy
# using the ZryCladdingFailure and ZryCreepLOCAUpdate materials.
#
# - Geometry:
# ri = 0.005 m
# ro = 0.0055 m
# H = 0.01 m
#
# - Single element
#
# - Temperature rampes from 300 K to 1000 K in 10 s
#
# - Boundary conditions:
# pressure at inner surface (pi) = 10 MPa
# pressure at outer surface (po) = 0.1 MPa
#
# Cladding failure is considered to occur when a rupture temperature is exceeded
# (criterion = 5, i.e., rupture temperature criterion).
#
# Failure occurs when the temperature exceeds the calculated rupture temperature
# and the simulation is terminated. This occurs at 128 s when the rupture
# temperature is 933.01 K and the prescribed temperature is 940 K.
#
#--------------------------------------------------------------------------------
[Mesh]
coord_type = RZ
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
xmin = 0.005
xmax = 0.0055
ymin = 0.0
ymax = 0.01
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 300.0
[]
[]
[AuxVariables]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[rupture_temperature]
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0 140'
y = '300 1000'
[]
[inner_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '10.0 10.0'
[]
[outer_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = 0
add_variables = true
strain = FINITE
generate_output = 'stress_zz strain_zz'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
block = 0
[]
[rupture_temperature]
type = MaterialRealAux
variable = rupture_temperature
property = rupture_temperature
boundary = right
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = right
execute_on = timestep_end
[]
[]
[BCs]
[outersurface]
type = Pressure
boundary = right
variable = disp_x
factor = 1.0e5
function = outer_pressure_function
[]
[innersurface]
type = Pressure
boundary = left
variable = disp_x
factor = 1.0e6
function = inner_pressure_function
[]
[u_bottom_fix]
type = DirichletBC
variable = disp_y
boundary = 'top bottom'
value = 0.0
[]
[temp_bc_1]
type = FunctionDirichletBC
variable = temperature
boundary = 'left right top bottom'
function = temperature_function
[]
[]
[Materials]
[phase]
type = ZrPhase
block = 0
temperature = temperature
numerical_method = 2
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zry_thermal_creep'
block = 0
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = 0
temperature = temperature
model_thermal_creep = true
model_irradiation_creep = false
model_primary_creep = false
max_inelastic_increment = 1.e-2
[]
[clad_density]
type = StrainAdjustedDensity
block = 0
strain_free_density = 6500
[]
[thermal]
type = HeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 100.0
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = right
failure_criterion = rupture_temperature
hoop_stress = stress_zz
hoop_strain = strain_zz
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 140.0
[TimeStepper]
type = ConstantDT
dt = 2
[]
[]
[Postprocessors]
[hoop_stress]
type = ElementExtremeValue
variable = stress_zz
[]
[temperature]
type = NodalExtremeValue
variable = temperature
[]
[rupture_temperature]
type = ElementExtremeValue
variable = rupture_temperature
[]
[burst]
type = ElementExtremeValue
variable = burst
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[]
[Outputs]
csv = true
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-09/puzry-09_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-09.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1200. '
y = '1.e+05 1.e+05 1.524e+06' # Linear increase at 0.0712 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1200. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 2.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-07
relative_tolerance = 1e-07
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-09_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_10MPa/rebeka_singlerod_2d_10MPa_aniso_hunt.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = rebeka_singlerod.e
[]
[]
[Variables]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+07 1.e+07' # 100 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
# 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]
[clad]
block = cladding
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'
use_automatic_differentiation = true
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.
translation = 0.1625
boundary = 4
[]
[no_y_midsection]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 101 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
oxide_thickness = scale_thickness
use_ad = true
[]
[]
[Materials]
[thermal]
type = ADZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ADZryElasticityTensor
block = cladding
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.956 0.240 0.304 1.0 1.0 1.0"
# function_names = "F G H L M N"
# temperature = temperature
[]
[clad_zrycreep]
type = ADZryAnisoCreepLOCAUpdate
block = cladding
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 = 'fract_beta_phase'
[]
[thermal_expansion]
type = ADZryThermalExpansionMATPROEigenstrain
block = cladding
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = ADStrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ADZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ADZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ADZryCladdingFailure
boundary = 2
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
solve_type = NEWTON
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.e-06
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp]
type = SideAverageValue
boundary = 2
variable = temperature
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[top_disp_r_clad] # this is mid height
type = NodalVariableValue
variable = disp_x
nodeid = 0 #coords (0.005375, 0.1625)
[]
[top_disp_r_clad_slice] # this is mid height matched to the 1.5d
type = NodalVariableValue
variable = disp_x
nodeid = 3 #coords (0.005375, 0.1625)
[]
[top_disp_z_clad]
type = NodalVariableValue
variable = disp_y
nodeid = 0 #coords (0.005375, 0.1625)
[]
[stress_xx] # stess in the top Element
type = ElementalVariableValue
variable = stress_xx
elementid = 0
[]
[stress_yy] # stess in the top Element
type = ElementalVariableValue
variable = stress_yy
elementid = 0
[]
[stress_zz] # stess in the top Element
type = ElementalVariableValue
variable = stress_zz
elementid = 0
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
cladding_blocks = cladding
plenum_boundary_name = 4
external_clad_boundary_name = 2
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_10MPa_aniso_hunt_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-29/puzry-29_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-29.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 7.3e+06' # Linear increase at 0.0720 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-07
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-29_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(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/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-18/puzry-18.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-18.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1500. '
y = '1.e+05 1.e+05 5.855e+06' # Linear increase at 0.1151 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1500. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 1500.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-18_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-17/puzry-17.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-17.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1500. '
y = '1.e+05 1.e+05 5.91e+06' # Linear increase at 0.1162 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1500. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.0e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.0
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 1500.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-17_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-24/puzry-24.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-24.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 6000. '
y = '1.e+05 1.e+05 9.05e+06' # Linear increase at 0.0179 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 6000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 6000.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-24_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-25/puzry-25_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-25.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 6000. '
y = '1.e+05 1.e+05 8.75e+06' # Linear increase at 0.0173 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 6000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 7.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-07
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-25_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(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/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-13/puzry-13.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-13.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 5000. '
y = '1.e+05 1.e+05 1.266e+07' # Linear increase at 0.0314 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 5000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 5000.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-13_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-19/puzry-19.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-19.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 2.53e+06' # Linear increase at 0.0243 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2000.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-19_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(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
[]
(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
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-23/puzry-23_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-23.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2500. '
y = '1.e+05 1.e+05 1.0855e+07' # Linear increase at 0.0717 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2500. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-07
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-23_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_IFA_650/analysis/IFA_650_2/IFA_650_2.i)
initial_fuel_density = 10412
[GlobalParams]
density = ${initial_fuel_density} # 0.95TD UO2, TD=10960
temperature = temp
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
[]
[Mesh]
coord_type = RZ
patch_size = 10 # For contact algorithm
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[mesh]
type = FileMeshGenerator
file = mesh_ife6502_medium2.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 300.
[]
[]
[AuxVariables]
[fast_neutron_flux]
[]
[fast_neutron_fluence]
[]
[grain_radius]
initial_condition = 5.e-06 # !! assumption
[]
[max_fission_rate]
[]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
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 oxigen 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
[]
[bbl_bdr_2]
order = CONSTANT
family = MONOMIAL
[]
[rad_bbl_bdr]
order = CONSTANT
family = MONOMIAL
[]
[sat_coverage]
order = CONSTANT
family = MONOMIAL
[]
[GBCoverage]
order = CONSTANT
family = MONOMIAL
[]
[deltav_v0_bd]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[average_linear_heat_rate]
type = PiecewiseLinear
data_file = linear_heat_rate_av.csv
format = columns
scale_factor = 1
[]
[axial_power_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors_lhr.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[average_clad_outer_temperature]
type = PiecewiseLinear
data_file = temperature_clad_outer_av.csv
format = columns
scale_factor = 1
[]
[axial_temperature_peaking_factors]
type = PiecewiseBilinear
data_file = axial_peaking_factors_ctemp.csv
scale_factor = 1
axis = 1 # (0,1,2) => (x,y,z)
[]
[clad_outer_temperature]
type = CompositeFunction
functions = 'average_clad_outer_temperature axial_temperature_peaking_factors'
[]
[coolant_pressure]
type = PiecewiseLinear
data_file = pressure_rig.csv
format = columns
scale_factor = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[uo2nat]
block = 'pellet_type_1 pellet_type_3'
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'uo2nat_thermal_strain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
decomposition_method = EigenSolution
[]
[fuel]
block = pellet_type_2
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'fuel_thermal_strain fuel_relocation_eigenstrain
fuel_volumetric_swelling_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
[]
[clad]
block = clad
strain = FINITE
incremental = true
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_strain clad_irradiation_growth'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz hoop_stress
hoop_strain'
decomposition_method = EigenSolution
[]
[]
[Kernels]
[gravity] # body force term in stress equilibrium equation
type = Gravity
variable = disp_y
value = -9.81
[]
[heat]
type = HeatConduction
variable = temp
#extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
#extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
#extra_vector_tags = 'ref'
block = pellet_type_2
fission_rate = fission_rate
decay_heat_function = decay_heat_function # Couple to postprocessor which defines the decay heat function
max_fission_rate = max_fission_rate # Couple to auxvariable which defines maximum fission rate over irradiation
[]
[]
[Burnup]
[burnup]
block = pellet_type_2
rod_ave_lin_pow = average_linear_heat_rate
axial_power_profile = axial_power_peaking_factors
num_radial = 80
num_axial = 11
a_lower = 28.5e-03 # mesh dependent
a_upper = 528.5e-03 # mesh dependent
fuel_inner_radius = 0.
fuel_outer_radius = 4.145e-03
fuel_volume_ratio = 1. # for use with dished pellets (ratio of actual volume to cylinder volume)
RPF = RPF
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
rod_ave_lin_pow = average_linear_heat_rate
axial_power_profile = axial_power_peaking_factors
factor = 3.e+13
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[grain_radius]
type = GrainRadiusAux
block = pellet_type_2
variable = grain_radius
temperature = temp
execute_on = linear
[]
[max_fission_rate]
type = MaxFissionRateAux
variable = max_fission_rate
block = pellet_type_2
fission_rate = fission_rate
execute_on = timestep_begin
[]
[creep_rate]
type = MaterialRealAux
block = clad
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
block = clad
variable = creep_strain_mag
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
boundary = 10
property = gap_conductance
variable = gap_cond
[]
[nbbl2]
type = MaterialRealAux
block = pellet_type_2
variable = bbl_bdr_2
property = bubble_GB_surface_density
[]
[radbbl]
type = MaterialRealAux
block = pellet_type_2
variable = rad_bbl_bdr
property = bubble_radius_GB
[]
[stcvrg]
type = MaterialRealAux
block = pellet_type_2
variable = sat_coverage
property = sat_coverage
[]
[frcvrg]
type = MaterialRealAux
block = pellet_type_2
variable = GBCoverage
property = GBCoverage
[]
[dvv0bd]
type = MaterialRealAux
block = pellet_type_2
variable = deltav_v0_bd
property = deltav_v0_bubble_GB
[]
[]
[Contact]
# Define mechanical contact between the fuel (sideset=10) and the clad (sideset=5)
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1.e+07
[]
[]
#TODO: Add option in StandardLWRFuelRodOutputs to compute plenum temperature this way.
# 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
[]
[]
[ThermalContact]
# Define thermal contact between the fuel (sideset=10) and the clad (sideset=5)
[thermal_contact]
type = GasGapHeatTransfer
variable = temp
primary = 5
secondary = 10
initial_moles = initial_moles
gas_released = fission_gas_released
plenum_pressure = plenum_pressure
contact_pressure = contact_pressure
jump_distance_model = LANNING
quadrature = true
normal_smoothing_distance = 0.1
[]
[]
[BCs]
[no_x_all] # pin pellets and clad along axis of symmetry (y)
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.
[]
[no_y_clad_bottom] # pin clad bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.
[]
[no_y_fuel_bottom] # pin fuel bottom in the axial direction (y)
type = DirichletBC
variable = disp_y
boundary = '1020'
value = 0.
[]
[clad_outer_temperature]
type = FunctionDirichletBC
boundary = '1 2 3'
variable = temp
function = clad_outer_temperature
[]
[Pressure] # apply coolant pressure on clad outer walls
[coolantPressure]
boundary = '1 2 3'
function = coolant_pressure # use the pressure_ramp function defined above
[]
[]
[PlenumPressure] # apply plenum pressure on clad inner walls and pellet surfaces
[plenumPressure]
boundary = 9
initial_pressure = 4.e+06
startup_time = -200
R = 8.3143
output_initial_moles = initial_moles
temperature = plenum_temp
volume = plenum_volume
material_input = fission_gas_released
output = plenum_pressure
[]
[]
[]
[Materials]
[fuel_density]
type = StrainAdjustedDensity
block = pellet_type_2
strain_free_density = ${initial_fuel_density}
[]
[fuel_thermal]
type = UO2Thermal
block = pellet_type_2
thermal_conductivity_model = FINK_LUCUTA
temperature = temp
burnup_function = burnup
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet_type_2
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_elasticity_tensor]
type = UO2ElasticityTensor
block = pellet_type_2
[]
[fuel_stress]
type = ComputeFiniteStrainElasticStress
block = pellet_type_2
[]
[fuel_swelling]
type = UO2VolumetricSwellingEigenstrain
gas_swelling_model_type = SIFGRS
block = pellet_type_2
temperature = temp
burnup_function = burnup
initial_porosity = 0.0468
initial_fuel_density = 10447.
eigenstrain_name = fuel_volumetric_swelling_eigenstrain
[]
[fuel_relocation]
type = UO2RelocationEigenstrain
block = pellet_type_2
burnup_function = burnup
diameter = 0.00829
rod_ave_lin_pow = average_linear_heat_rate
axial_power_profile = axial_power_peaking_factors
diametral_gap =70.e-06
burnup_relocation_stop = 1.e+20
eigenstrain_name = fuel_relocation_eigenstrain
relocation_activation1 = 19685.039
[]
[fission_gas]
type = UO2Sifgrs
block = pellet_type_2
temperature = temp
fission_rate = fission_rate
grain_radius = grain_radius
gbs_model = true
transient_option = MICROCRACKING_BURNUP
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 6550.
[]
[clad_thermal]
block = clad
type = ZryThermal
temperature = temp
[]
[clad_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = clad
temperature = temp
stress_free_temperature = 300.0 #TODO: It is odd to have different values for fuel and clad, but keeping this way to match SM
eigenstrain_name = clad_thermal_strain
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = clad
youngs_modulus = 1.e+11
poissons_ratio = 0.3
[]
[zry_thermal_creep]
type = ZryCreepLOCAUpdate
block = clad
temperature = temp
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 3.e-03
#TODO: The parameters below really should be provided, but they weren't specified in the SM model.
# They may have not been included because irradiation creep wasn't modeled. However, they are used in the thermal
# creep model as well.
# fast_neutron_flux = fast_neutron_flux
# fast_neutron_fluence = fast_neutron_fluence
[]
[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 = ESCORE_IrradiationGrowthZr4
eigenstrain_name = clad_irradiation_growth
[]
[clad_phase]
type = ZrPhase
block = clad
temperature = temp
numerical_method = 2
[]
[clad_oxidation]
type = ZryOxidation
boundary = 2
temperature = temp
clad_inner_radius = 4.18e-03
clad_outer_radius = 4.75e-03
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
#use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
#eff_strain_rate_plast =
fraction_beta_phase = fract_beta_phase
fraction_oxygen_gain = oxywtfract_total
temperature = temp
[]
[uo2nat_thermal]
type = HeatConductionMaterial
block = 'pellet_type_1 pellet_type_3'
thermal_conductivity = 3. # !! assumption
specific_heat = 300. # !! assumption
[]
[uo2nat_density]
type = StrainAdjustedDensity
block = 'pellet_type_1 pellet_type_3'
strain_free_density = ${initial_fuel_density}
[]
[uo2nat_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 'pellet_type_1 pellet_type_3'
thermal_expansion_coeff = 10.0e-6
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = uo2nat_thermal_strain
[]
[uo2nat_elasticity_tensor]
type = UO2ElasticityTensor
block = 'pellet_type_1 pellet_type_3'
[]
[uo2nat_stress]
type = ComputeFiniteStrainElasticStress
block = 'pellet_type_1 pellet_type_3'
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 100.
variable = temp
[]
[limitX]
type = MaxIncrement
max_increment = 1.e-05
variable = disp_x
[]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
l_max_its = 100
l_tol = 1.e-02
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-10
start_time = -200
n_startup_steps = 1
end_time = 229440
dtmax = 2700. #1000.
dtmin = 0.00000001
[TimeStepper]
type = IterationAdaptiveDT
dt = 200.
#optimal_iterations = 4
#iteration_window = 2
#linear_iteration_ratio = 100
timestep_limiting_function = average_clad_outer_temperature
max_function_change = 10
timestep_limiting_postprocessor = material_timestep
time_t = '-200. 0. 3.5e+04 216000. 218700. 219180. 219240. 219799. 219819. 219821. 219999.'
time_dt = ' 200. 900. 2700. 2700. 60. 60. 20. 20.
10. 10. 2.'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '5'
include_fuel = true
[]
[]
[Postprocessors]
[decay_heat_function]
type = DecayHeatFunction
time_at_shutdown = 100000001.
[]
[clad_inner_vol] # volume inside of cladding
type = InternalVolume
boundary = 7
execute_on = 'initial linear'
[]
[avg_clad_temp] # average temperature of cladding interior
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temp
block = clad
execute_on = 'initial timestep_end'
[]
[max_fuel_temp]
type = NodalExtremeValue
value_type = max
variable = temp
block = pellet_type_2
execute_on = 'initial timestep_end'
[]
[central_fuel_temp]
type = NodalVariableValue
variable = temp
nodeid = 54 # Global node ID = 55 !! Mesh dependent
execute_on = 'initial timestep_end'
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
execute_on = 'initial linear'
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
execute_on = 'initial linear'
[]
[alhr_input]
type = FunctionValuePostprocessor
function = average_linear_heat_rate
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = clad
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
block = clad
execute_on = 'initial timestep_end'
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfract_total
execute_on = 'initial timestep_end'
[]
[max_oxygen_fgain]
type = ElementExtremeValue
block = clad
value_type = max
variable = oxywtfgain_total
execute_on = 'initial timestep_end'
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
block = clad
execute_on = 'initial timestep_end'
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
block = clad
execute_on = 'initial timestep_end'
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = hoop_strain
block = clad
execute_on = 'initial timestep_end'
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
block = clad
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
block = clad
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = hoop_strain
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]
fuel_pellet_blocks = pellet_type_2
temperature = temp
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
print_linear_residuals = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[out_vector_pp]
execute_vector_postprocessors_on = 'timestep_end'
type = CSV
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-03/puzry-03_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-03.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 2000. '
y = '1.e+05 1.e+05 7.3e+05' # Linear increase at 0.063 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 2000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-07
relative_tolerance = 1e-07
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-03_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-22/puzry-22.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-22.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 6000. '
y = '1.e+05 1.e+05 7.5e+06' # Linear increase at 0.0148 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 6000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 6000.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-22_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_ORNL_cladding_burst_tests/analysis/Zr2_2/ornl_zr2_2_ad.i)
# Simulation ORNL burst tests Zr2_2
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = zr2_ornl_burst_test_mesh.e
[]
[]
[Variables]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func] # only 10 inches of the rod are within the heated zone (cf. Terrani email)
type = PiecewiseBilinear
data_file = temperature_ornl_zr2_2.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
data_file = pressure_inner_ornl_zr2_2.csv
scale_factor = 1.e+06
format = columns
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '0.1 0.1 ' # atmospheric pressure
scale_factor = 1.e+06
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
use_automatic_differentiation = true
block = cladding
add_variables = true
strain = FINITE
decomposition_method = TaylorExpansion
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz hoop_stress'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 4'
preset = false
[]
[no_y_top]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
preset = false
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[mid_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 2 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
type = ADZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ADZryElasticityTensor
block = cladding
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[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 = cladding
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 = cladding
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = ADStrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[phase_converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[oxidation]
type = ADZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.004875
clad_outer_radius = 0.005580
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
#use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[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 = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 2.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 2.
[]
[]
[Postprocessors]
[pressure_inner]
type = FunctionValuePostprocessor
function = inner_pressure_func
execute_on = 'initial timestep_end'
[]
[pressure_outer]
type = FunctionValuePostprocessor
function = outer_pressure_func
execute_on = 'initial timestep_end'
[]
[ave_clad_temp]
type = SideAverageValue
boundary = 2
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
execute_on = 'initial timestep_end'
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
execute_on = 'initial timestep_end'
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
execute_on = 'initial timestep_end'
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
execute_on = 'initial timestep_end'
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
execute_on = 'initial timestep_end'
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
execute_on = 'initial timestep_end'
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
execute_on = 'initial timestep_end'
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[mid_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 22
[]
[stress_xx_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_xx
elementid = 19
[]
[stress_yy_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_yy
elementid = 19
[]
[stress_zz_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_zz
elementid = 19
[]
[strain_zz_midplane] # strain in the mid Element
type = ElementalVariableValue
variable = strain_zz
elementid = 19
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
plenum_boundary_name = 4
cladding_blocks = cladding
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
perf_graph = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 20
[]
[chkfile]
type = CSV
file_base = ornl_zr2_2_ad_chkfile
show = 'pressure_inner max_hoop_strain max_hoop_stress'
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/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-12/puzry-12.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-12.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1200. '
y = '1.e+05 1.e+05 1.546e+06' # Linear increase at 0.0723 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1200. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 1200.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-12_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-21/puzry-21_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-21.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 4000. '
y = '1.e+05 1.e+05 5.14e+06' # Linear increase at 0.0168 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 4000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-07
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-21_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(test/tests/solid_mechanics/zry_mechanics/zry_clad_failure/ad_zry_clad_failure_plastic_instability.i)
#--------------------------------------------------------------------------------
#
# This test case is prepared to test the LOCA failure (burst) criterion for Zirconium alloy
# using the ZryCladdingFailure and ZryCreepLOCAUpdate materials.
#
# - Geometry:
# ri = 0.005 m
# ro = 0.0055 m
# H = 0.01 m
#
# - Single element
#
# - Temperature = 1000 K
#
# - Boundary conditions:
# pressure at inner surface (pi) = from 1 to 10 MPa in 10 s
# pressure at outer surface (po) = 0.1 MPa
#
# Cladding failure is considered to occur when either a limiting creep rate is exceeded
# (criterion = 1, i.e., plastic instability criterion).
#
#
# Failure occurs at the attainment of the limiting creep rate, which is
# lim_creep_rate = 100 h^-1 ~0.0278 s^-1.
#
#--------------------------------------------------------------------------------
[Mesh]
coord_type = RZ
[generated_mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 1
ny = 1
xmin = 0.005
xmax = 0.0055
ymin = 0.0
ymax = 0.01
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 1000.
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[temperature_function]
type = PiecewiseLinear
x = '0 10'
y = '1000 1000'
[]
[inner_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 10.0'
[]
[outer_pressure_function]
type = PiecewiseLinear
x = '0 10'
y = '1.0 1.0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
use_automatic_differentiation = true
block = 0
add_variables = true
strain = FINITE
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
property = creep_rate
execute_on = timestep_end
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = right #3
execute_on = timestep_end
[]
[]
[BCs]
[outersurface]
type = ADPressure
boundary = right
variable = disp_x
factor = 1.0e5
function = outer_pressure_function
[]
[innersurface]
type = ADPressure
boundary = left
variable = disp_x
factor = 1.0e6
function = inner_pressure_function
[]
[u_bottom_fix]
type = ADDirichletBC
variable = disp_y
boundary = 'top bottom'
value = 0.0
[]
[temp_bc_1]
type = ADFunctionDirichletBC
variable = temp
boundary = 'left right top bottom'
function = temperature_function
[]
[]
[Materials]
[phase]
type = ADZrPhase
block = 0
temperature = temp
numerical_method = 2
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'zry_thermal_creep'
block = 0
[]
[zry_thermal_creep]
type = ADZryCreepLOCAUpdate
block = 0
temperature = temp
model_thermal_creep = true
model_irradiation_creep = false
model_primary_creep = false
[]
[clad_density]
type = ADStrainAdjustedDensity
block = 0
strain_free_density = 6500
[]
[thermal]
type = ADHeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 100.
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = right #3
failure_criterion = plastic_instability
effective_strain_rate_creep = creep_rate
temperature = temp
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-6
l_tol = 1e-5
start_time = 0.0
end_time = 8.9
dt = 0.1
[]
[Postprocessors]
[creep_rate]
type = ElementalVariableValue
elementid = 0
variable = creep_rate
[]
[burst]
type = ElementalVariableValue
elementid = 0
variable = burst
[]
[]
[Outputs]
exodus = true
[console]
type = Console
max_rows = 25
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-17/puzry-17_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-17.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 1500. '
y = '1.e+05 1.e+05 5.91e+06' # Linear increase at 0.1162 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 1500. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-07
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-17_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-13/puzry-13_aniso.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-13.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 5000. '
y = '1.e+05 1.e+05 1.266e+07' # Linear increase at 0.0314 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 5000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
# Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding
# Nuclear Engineering and Design, 53, 2312-2322 (2021)
[F]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.738 0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.174 0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '293 1073 1400'
y = '0.588 0.588 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'
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = TaylorExpansion
use_automatic_differentiation = true
[]
[]
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = ADMaterialRealAux
variable = creep_rate
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 = ADMaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[sigmaburst]
type = ADMaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = ADMaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = ADDirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ADZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[hill_constants]
type = ADHillConstants
hill_constants = "0.738 0.174 0.588 1.0 1.0 1.0"
function_names = "F G H L M N"
temperature = temperature
[]
[creep_update]
type = ADZryAnisoCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 5e-05
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
fract_beta_phase_name = 'fract_beta_phase'
max_integration_error = 1000000.0
absolute_tolerance = 1e-13
relative_tolerance = 1e-11
[]
[creep]
type = ADComputeMultipleInelasticStress
block = 1
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ADZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ADZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ADZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
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.e-04
nl_abs_tol = 1.e-07
start_time = 0.
n_startup_steps = 1
end_time = 2500.
dtmax = 1.
dtmin = 1.0e-9
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-13_aniso_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-27/puzry-27.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
displacements = 'disp_x disp_y'
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = puzry_mesh.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func]
type = PiecewiseBilinear
data_file = temperature_puzry-27.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 1000. 3000. '
y = '1.e+05 1.e+05 5.06e+06' # Linear increase at 0.0248 bar/s
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 3000. '
y = '1.e+05 1.e+05' # Argon at 1 bar
[]
[]
[AuxVariables]
[creep_rate]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # Fraction of beta phase in Zry
order = CONSTANT
family = MONOMIAL
[]
[burst_stress] # Hoop stress at cladding burst
order = CONSTANT
family = MONOMIAL
[]
[burst] # Did cladding burst occur?
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics]
[SolidMechanics]
[QuasiStatic]
[clad]
strain = FINITE
eigenstrain_names = 'clad_thermal_eigenstrain'
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
additional_generate_output = 'stress_xx stress_yy stress_zz
vonmises_stress strain_zz hoop_stress'
decomposition_method = EigenSolution
[]
[]
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[AuxKernels]
[creep_rate]
type = MaterialRealAux
variable = creep_rate
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
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = '2 5'
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = '2 5'
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = FunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 5'
[]
[no_x_plug]
type = DirichletBC
variable = disp_x
boundary = 6
value = 0.
[]
[no_y_mid_plane]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply Ar pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 126 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
block = 1
type = ZryThermal
temperature = temperature
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.e+11
poissons_ratio = 0.3
block = 1
[]
[creep_update]
type = ZryCreepLOCAUpdate
block = 1
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
max_inelastic_increment = 1.e-04
temperature = temperature
temperature_standard_thermal_creep_end = 700
temperature_loca_creep_begin = 900.
[]
[creep]
type = ComputeMultipleInelasticStress
block = 1
tangent_operator = elastic
inelastic_models = 'creep_update'
[]
[clad_thermal_eigenstrain]
type = ZryThermalExpansionMATPROEigenstrain
block = 1
stress_free_temperature = 300.
temperature = temperature
eigenstrain_name = 'clad_thermal_eigenstrain'
[]
[density]
type = StrainAdjustedDensity
block = 1
strain_free_density = 6550.0
[]
[phase]
type = ZrPhase
block = 1
temperature = temperature
numerical_method = 2
[]
[failure_criterion]
type = ZryCladdingFailure
boundary = '2 5'
failure_criterion = combined_overstress_and_plastic_instability
hoop_stress = hoop_stress
effective_strain_rate_creep = creep_rate
temperature = temperature
fraction_beta_phase = fract_beta_phase
[]
[]
[Preconditioning]
active = 'smp'
[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.e-04
nl_abs_tol = 1.e-08
start_time = 0.
n_startup_steps = 1
end_time = 3000.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average cladding temperature (outer)
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
[]
[max_clad_temp]
type = NodalExtremeValue
value_type = max
variable = temperature
[]
[max_betaph_fract]
type = ElementExtremeValue
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
value_type = max
variable = creep_rate
[]
[max_creep_strain_mag]
type = ElementExtremeValue
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
value_type = max
variable = hoop_stress
[]
[min_burst_stress]
type = ElementExtremeValue
value_type = min
variable = burst_stress
[]
[pressure_inn]
type = FunctionValuePostprocessor
function = inner_pressure_func
[]
[burst]
type = ElementExtremeValue
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = 1
[]
[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
cladding_blocks = 1
plenum_boundary_name = '4 6'
external_clad_boundary_name = '2 5'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = puzry-27_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_ORNL_cladding_burst_tests/analysis/Zr2_1/ornl_zr2_1_ad.i)
# Simulation ORNL burst tests Zr2_1
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = zr2_ornl_burst_test_mesh.e
[]
[]
[Variables]
[temperature]
initial_condition = 300.
[]
[]
[Functions]
[temperature_func] # only 10 inches of the rod are within the heated zone (cf. Terrani email)
type = PiecewiseBilinear
data_file = temperature_ornl_zr2_1.csv
axis = 1 # (0,1,2) => (x,y,z)
[]
[inner_pressure_func]
type = PiecewiseLinear
data_file = pressure_inner_ornl_zr2_1.csv
scale_factor = 1.e+06
format = columns
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 400. '
y = '0.1 0.1 ' # atmospheric pressure
scale_factor = 1.e+06
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
use_automatic_differentiation = true
block = cladding
add_variables = true
strain = FINITE
decomposition_method = TaylorExpansion
cylindrical_axis_point1 = '0 0 0'
cylindrical_axis_point2 = '0 1 0'
eigenstrain_names = 'clad_thermal_eigenstrain'
generate_output = 'vonmises_stress stress_xx stress_yy stress_zz strain_xx
strain_yy strain_zz hoop_stress'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temperature
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = ADMaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = ADMaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = ADMaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[temperature]
type = ADFunctionDirichletBC
variable = temperature
function = temperature_func
boundary = '2 4'
preset = false
[]
[no_y_top]
type = ADDirichletBC
variable = disp_y
boundary = 3
value = 0.
preset = false
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[mid_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 2 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[Materials]
[thermal]
type = ADZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ADZryElasticityTensor
block = cladding
matpro_youngs_modulus = false
matpro_poissons_ratio = false
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[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 = cladding
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 = cladding
temperature = temperature
stress_free_temperature = 300.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = ADStrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[phase_converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[oxidation]
type = ADZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.004875
clad_outer_radius = 0.005580
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
#use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]
[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 = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 400.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[pressure_inner]
type = FunctionValuePostprocessor
function = inner_pressure_func
execute_on = 'initial timestep_end'
[]
[pressure_outer]
type = FunctionValuePostprocessor
function = outer_pressure_func
execute_on = 'initial timestep_end'
[]
[ave_clad_temp]
type = SideAverageValue
boundary = 2
variable = temperature
execute_on = 'initial timestep_end'
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
execute_on = 'initial timestep_end'
[]
[min_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = min
variable = temperature
execute_on = 'initial timestep_end'
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
execute_on = 'initial timestep_end'
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
execute_on = 'initial timestep_end'
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
execute_on = 'initial timestep_end'
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
execute_on = 'initial timestep_end'
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
execute_on = 'initial timestep_end'
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
execute_on = 'initial timestep_end'
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
execute_on = 'initial timestep_end'
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
execute_on = 'initial timestep_end'
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
[]
[mid_disp_r_clad]
type = NodalVariableValue
variable = disp_x
nodeid = 22
[]
[stress_xx_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_xx
elementid = 19
[]
[stress_yy_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_yy
elementid = 19
[]
[stress_zz_midplane] # stress in the mid Element
type = ElementalVariableValue
variable = stress_zz
elementid = 19
[]
[strain_zz_midplane] # strain in the mid Element
type = ElementalVariableValue
variable = strain_zz
elementid = 19
[]
[]
[StandardLWRFuelRodOutputs]
rod_component = clad
plenum_boundary_name = 4
cladding_blocks = cladding
[]
[PerformanceMetricOutputs]
[]
[Outputs]
exodus = true
perf_graph = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 20
[]
[chkfile]
type = CSV
file_base = ornl_zr2_1_ad_chkfile
show = 'pressure_inner max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
(assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_02MPa/rebeka_singlerod_2d_02MPa.i)
# Simulation of REBEKA single-rod, cladding-only LOCA tests.
[GlobalParams]
order = SECOND
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[mesh]
type = FileMeshGenerator
file = rebeka_singlerod.e
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temperature]
initial_condition = 573.0
[]
[]
[Functions]
[temperature_func]
type = PiecewiseLinear
x = '0. 700. '
y = '573. 1273.' # From 300 to 1000 C at 1 K/s
[]
[inner_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '2.e+06 2.e+06' # 20 bar
[]
[outer_pressure_func]
type = PiecewiseLinear
x = '0. 700. '
y = '1.e+05 1.e+05' # atmospheric pressure
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[clad]
block = cladding
add_variables = false
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'
[]
[]
[AuxVariables]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase]
order = CONSTANT
family = MONOMIAL
[]
[scale_thickness]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfract_total]
order = CONSTANT
family = MONOMIAL
[]
[oxywtfgain_total]
order = CONSTANT
family = MONOMIAL
[]
[burst_stress]
order = CONSTANT
family = MONOMIAL
[]
[burst]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temperature
[]
[]
[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
[]
[scl_thickness]
type = MaterialRealAux
variable = scale_thickness
property = oxide_scale_thickness
boundary = 2
[]
[ofract_total]
type = MaterialRealAux
variable = oxywtfract_total
property = current_oxygen_weight_frac_total
boundary = 2
[]
[ofgain_total]
type = MaterialRealAux
boundary = 2
variable = oxywtfgain_total
property = oxygen_weight_frac_gained_total
[]
[sigmaburst]
type = MaterialRealAux
variable = burst_stress
property = burst_stress
boundary = 2
[]
[hasburst]
type = MaterialRealAux
variable = burst
property = failed
boundary = 2
execute_on = timestep_end
[]
[]
[BCs]
[inner_temperature]
type = REBEKADirichletBC
variable = temperature
function_tempm = temperature_func
minimum_temperature = 573.
translation = 0.1625
boundary = 4
[]
[no_y_midsection]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.
[]
[Pressure]
[outer_pressure] # apply steam pressure on clad outer wall
boundary = 2
function = outer_pressure_func
[]
[inner_pressure] # apply He pressure on clad inner wall
boundary = 4
function = inner_pressure_func
[]
[]
[]
[Constraints]
[bottom_section_plane]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = 101 # node on boundary
secondary = 1 # boundary
penalty = 1.e+10
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 2
variable = temperature
inlet_temperature = 473.
inlet_pressure = 1.e+05
inlet_massflux = 1.0 # kg/m^2-sec # almost stagnant steam
rod_diameter = 10.75e-03
rod_pitch = 1.26e-02 # default
number_axial_zone = 15
oxide_thickness = scale_thickness
[]
[]
[Materials]
[thermal]
type = ZryThermal
block = cladding
temperature = temperature
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = cladding
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'clad_zrycreep'
block = cladding
[]
[clad_zrycreep]
type = ZryCreepLOCAUpdate
block = cladding
temperature = temperature
model_irradiation_creep = false
model_primary_creep = false
model_thermal_creep = true
temperature_loca_creep_begin = 501 # see Erbacher et al., 1982
temperature_standard_thermal_creep_end = 500
[]
[thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = cladding
temperature = temperature
stress_free_temperature = 573.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[density]
type = StrainAdjustedDensity
block = cladding
strain_free_density = 6550
[]
[phase]
type = ZrPhase
block = cladding
temperature = temperature
numerical_method = 2
[]
[oxidation]
type = ZryOxidation
boundary = 2
temperature = temperature
clad_inner_radius = 0.00465
clad_outer_radius = 0.005375
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
[]
[clad_failure_criterion]
type = ZryCladdingFailure
boundary = 2
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'
l_max_its = 100
l_tol = 1e-2
nl_max_its = 15
nl_rel_tol = 1.e-04
nl_abs_tol = 1.e-08
start_time = 0
n_startup_steps = 1
end_time = 700.
dtmax = 1.
dtmin = 0.00000001
[TimeStepper]
type = PostprocessorDT
postprocessor = material_timestep
dt = 1.
[]
[]
[Postprocessors]
[ave_clad_exterior_temp] # average temperature of cladding exterior
type = SideAverageValue
boundary = 2
variable = temperature
[]
[material_timestep]
type = MaterialTimeStepPostprocessor
block = cladding
[]
[max_clad_temp]
type = NodalExtremeValue
block = cladding
value_type = max
variable = temperature
[]
[max_oxygen_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = oxywtfract_total
[]
[max_betaph_fract]
type = ElementExtremeValue
block = cladding
value_type = max
variable = fract_beta_phase
[]
[max_creep_rate]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_rate_aux
[]
[max_creep_strain_mag]
type = ElementExtremeValue
block = cladding
value_type = max
variable = creep_strain_mag
[]
[max_hoop_strain]
type = ElementExtremeValue
block = cladding
value_type = max
variable = strain_zz
[]
[max_hoop_stress]
type = ElementExtremeValue
block = cladding
value_type = max
variable = hoop_stress
[]
[vonmises_stress_clad]
type = ElementAverageValue
block = cladding
variable = vonmises_stress
[]
[min_burst_stress]
type = ElementExtremeValue
block = cladding
value_type = min
variable = burst_stress
[]
[burst]
type = ElementExtremeValue
block = cladding
value_type = max
variable = burst
[]
[peak_hoop_strain]
type = ElementExtremeValue
value_type = max
variable = strain_zz
block = cladding
[]
[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
cladding_blocks = cladding
plenum_boundary_name = 4
external_clad_boundary_name = 2
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
exodus = true
csv = true
[console]
type = Console
output_linear = true
max_rows = 25
[]
[chkfile]
type = CSV
file_base = rebeka_2d_02MPa_out_chkfile
show = 'average_interior_clad_temperature max_hoop_strain max_hoop_stress'
execute_on = 'FINAL'
[]
[]
[UserObjects]
[terminator]
type = Terminator
expression = 'burst > 0'
[]
[fuel_pin_geo]
type = FuelPinGeometry
clad_outer_wall = '2'
clad_inner_wall = '4'
include_fuel = false
[]
[]