- effective_inelastic_strain_nameeffective_creep_strainName of the material property that stores the effective inelastic strain
Default:effective_creep_strain
C++ Type:std::string
Controllable:No
Description:Name of the material property that stores the effective inelastic strain
- inelastic_strain_rate_namecreep_strain_rateName of the material property that stores the inelastic strain rate
Default:creep_strain_rate
C++ Type:std::string
Controllable:No
Description:Name of the material property that stores the inelastic strain rate
ADZryAnisoCreepLOCAUpdate
Computes the secondary thermal creep under loss-of-coolant accident conditions using the Erbacher (default), Kaddour, or Donaldson models; the Limback-Andersson primary thermal creep; and the Hoppe irradiation creep for Zircaloy cladding. This material must be run in conjunction with ComputeMultipleInelasticStress.
Description
This class uses a generalized return mapping that allows for simulating anisotropic plastic and creep behavior. In short, ADAnisoZryCreepLOCAUpdate allows to employ the isotropic ADZryCreepLOCAUpdate class physics with anisotropic creep defined by Hill coefficients, i.e. , , and , for axial deformation; and , , and , for shear deformation. These parameters are intended to capture the overall engineering-scale behavior of cladding metals due to their grain texture.
The user can describe Hill coefficients as function of a temperature field to capture changes to the material's microstructure as the simulation progresses. Several options for the selection of coefficients are provided in Choi et al. (2021), i.e. , , and , at room temperature; and , , and , at 1073 . Further references on the selection of anisotropic coefficients may be consulted Hunt (1975) and Rosinger et al. (1982).
Example Input Syntax
[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
[hill]
type = ADHillConstants<<<{"description": "Build and rotate the Hill Tensor. It can be used with other Hill plasticity and creep materials.", "href": "../HillConstants.html"}>>>
hill_constants<<<{"description": "Hill material constants in order: F, G, H, L, M, N"}>>> = "0.5 0.5 0.5 1.0 1.0 1.0"
[]
[](test/tests/solid_mechanics/zry_creep/erbacher/ad_operating_to_loca_hill_creep_5.i)[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
[zry_thermal_creep]
type = ADZryAnisoCreepLOCAUpdate<<<{"description": "Computes the secondary thermal creep under loss-of-coolant accident conditions using the Erbacher (default), Kaddour, or Donaldson models; the Limback-Andersson primary thermal creep; and the Hoppe irradiation creep for Zircaloy cladding. This material must be run in conjunction with ComputeMultipleInelasticStress.", "href": "ZryCreepLOCAUpdate.html"}>>>
high_temperature_creep_model<<<{"description": "The model to use in calculating high temperature creep. Choices are: Erbacher Kaddour Donaldson"}>>> = erbacher
temperature<<<{"description": "Coupled temperature (K)"}>>> = temp
model_primary_creep<<<{"description": "Set true to activate primary creep"}>>> = false
model_irradiation_creep<<<{"description": "Set true to activate irradiation induced creep"}>>> = false
fract_beta_phase_name<<<{"description": "The name of the beta phase fraction material property"}>>> = 'ad_fract_beta_phase'
[]
[](test/tests/solid_mechanics/zry_creep/erbacher/ad_operating_to_loca_hill_creep_5.i)ADZryAnisoCreepLOCAUpdate must be run in conjunction with the inelastic strain return mapping stress calculator as shown below:
[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
[stress]
type = ADComputeMultipleInelasticStress<<<{"description": "Compute state (stress and internal parameters such as plastic strains and internal parameters) using an iterative process. Combinations of creep models and plastic models may be used.", "href": "../ADComputeMultipleInelasticStress.html"}>>>
inelastic_models<<<{"description": "The material objects to use to calculate stress and inelastic strains. Note: specify creep models first and plasticity models second."}>>> = 'zry_thermal_creep'
[]
[](test/tests/solid_mechanics/zry_creep/erbacher/ad_operating_to_loca_hill_creep_5.i)Temperature-dependent coefficients can be defined by piecewise linear functions
[Functions<<<{"href": "../../../syntax/Functions/index.html"}>>>]
[F]
type = PiecewiseLinear<<<{"description": "Linearly interpolates between pairs of x-y data", "href": "../../functions/PiecewiseLinear.html"}>>>
x<<<{"description": "The abscissa values"}>>> = '1250 1400'
y<<<{"description": "The ordinate values"}>>> = '0.738 0.57'
[]
[](test/tests/solid_mechanics/zry_creep/erbacher/ad_operating_to_loca_hill_creep_5_temperature.i)which can be used as input to the Hill material
[Materials<<<{"href": "../../../syntax/Materials/index.html"}>>>]
[hill]
type = ADHillConstants<<<{"description": "Build and rotate the Hill Tensor. It can be used with other Hill plasticity and creep materials.", "href": "../HillConstants.html"}>>>
hill_constants<<<{"description": "Hill material constants in order: F, G, H, L, M, N"}>>> = "0.738 0.175 0.588 1.0 1.0 1.0"
temperature<<<{"description": "Coupled temperature"}>>> = temp
function_names<<<{"description": "A set of functions that describe the evolution of anisotropy with temperature"}>>> = "F G H L M N"
[]
[](test/tests/solid_mechanics/zry_creep/erbacher/ad_operating_to_loca_hill_creep_5_temperature.i)Input Parameters
- absolute_tolerance1e-11Absolute convergence tolerance for Newton iteration
Default:1e-11
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Absolute convergence tolerance for Newton iteration
- acceptable_multiplier10Factor applied to relative and absolute tolerance for acceptable convergence if iterations are no longer making progress
Default:10
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Factor applied to relative and absolute tolerance for acceptable convergence if iterations are no longer making progress
- base_nameOptional parameter that defines a prefix for all material properties related to this stress update model. This allows for multiple models of the same type to be used without naming conflicts.
C++ Type:std::string
Controllable:No
Description:Optional parameter that defines a prefix for all material properties related to this stress update model. This allows for multiple models of the same type to be used without naming conflicts.
- 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
- 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
Options:NONE, ELEMENT, SUBDOMAIN
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.
- donaldson_creep_directionAxialThe direction to use in calculating the Donaldson model. Choices are: Axial Hoop
Default:Axial
C++ Type:MooseEnum
Options:Axial, Hoop
Controllable:No
Description:The direction to use in calculating the Donaldson model. Choices are: Axial Hoop
- fast_neutron_fluenceThe fast neutron fluence
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The fast neutron fluence
- fast_neutron_fluxThe fast neutron flux
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The fast neutron flux
- fract_beta_phase_namefract_beta_phaseThe name of the beta phase fraction material property
Default:fract_beta_phase
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:The name of the beta phase fraction material property
- high_temperature_creep_modelErbacherThe model to use in calculating high temperature creep. Choices are: Erbacher Kaddour Donaldson
Default:Erbacher
C++ Type:MooseEnum
Options:Erbacher, Kaddour, Donaldson
Controllable:No
Description:The model to use in calculating high temperature creep. Choices are: Erbacher Kaddour Donaldson
- initial_fast_fluence0The initial fast neutron fluence
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The initial fast neutron fluence
- max_creep_increment0.001Maximum creep strain increment allowed by accuracy time step criterion
Default:0.001
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Maximum creep strain increment allowed by accuracy time step criterion
- max_inelastic_increment0.0001The maximum inelastic strain increment allowed in a time step
Default:0.0001
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The maximum inelastic strain increment allowed in a time step
- max_integration_error0.0005The maximum inelastic strain increment integration error allowed
Default:0.0005
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The maximum inelastic strain increment integration error allowed
- model_irradiation_creepTrueSet true to activate irradiation induced creep
Default:True
C++ Type:bool
Controllable:No
Description:Set true to activate irradiation induced creep
- model_primary_creepTrueSet true to activate primary creep
Default:True
C++ Type:bool
Controllable:No
Description:Set true to activate primary creep
- model_thermal_creepTrueSet true to activate steady state thermal creep
Default:True
C++ Type:bool
Controllable:No
Description:Set true to activate steady state thermal creep
- outputThe reporting postprocessor to use for the max_iterations value.
C++ Type:PostprocessorName
Unit:(no unit assumed)
Controllable:No
Description:The reporting postprocessor to use for the max_iterations value.
- primary_creep_modelLIMBACKThe model to be used for primary thermal creep.
Default:LIMBACK
C++ Type:MooseEnum
Options:MATSUO, LIMBACK
Controllable:No
Description:The model to be used for primary thermal creep.
- relative_tolerance1e-08Relative convergence tolerance for Newton iteration
Default:1e-08
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Relative convergence tolerance for Newton iteration
- start_time0Start time (if not zero)
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Start time (if not zero)
- temperatureCoupled temperature (K)
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled temperature (K)
- temperature_loca_creep_begin900The lower limit of the temperature range (in K) in which the thermal creep model applies
Default:900
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The lower limit of the temperature range (in K) in which the thermal creep model applies
- temperature_standard_thermal_creep_end700The upper limit of temperature (in K) where the standard thermal creep model for normal operating temperature no longer applies
Default:700
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The upper limit of temperature (in K) where the standard thermal creep model for normal operating temperature no longer applies
- use_transformationTrueWhether to employ updated Hill's tensor due to rigid body or large deformation kinematic rotations. If an initial rigid body rotation is provided by the user in increments of 90 degrees (e.g. 90, 180, 270), this option can be set to false, in which case the Hill's coefficients are extracted from the transformed Hill's tensor.
Default:True
C++ Type:bool
Controllable:No
Description:Whether to employ updated Hill's tensor due to rigid body or large deformation kinematic rotations. If an initial rigid body rotation is provided by the user in increments of 90 degrees (e.g. 90, 180, 270), this option can be set to false, in which case the Hill's coefficients are extracted from the transformed Hill's tensor.
- zircaloy_material_typeSTRESS_RELIEF_ANNEALEDType of zircaloy material properties to use in calculating creep. Note: ESCORE_IRRADIATIONGROWTHZR4 is not valid.
Default:STRESS_RELIEF_ANNEALED
C++ Type:MooseEnum
Options:STRESS_RELIEF_ANNEALED, RECRYSTALLIZATION_ANNEALED, PARTIAL_RECRYSTALLIZATION_ANNEALED, ZIRLO, M5, ESCORE_IRRADIATIONGROWTHZR4
Controllable:No
Description:Type of zircaloy material properties to use in calculating creep. Note: ESCORE_IRRADIATIONGROWTHZR4 is not valid.
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- 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
- creeprate_scale_factor1scaling factor for total creep rate. Used for calibration and sensitivity studies
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:scaling factor for total creep rate. Used for calibration and sensitivity studies
Advanced: Scaling Factors Parameters
- internal_solve_full_iteration_historyFalseSet true to output full internal Newton iteration history at times determined by `internal_solve_output_on`. If false, only a summary is output.
Default:False
C++ Type:bool
Controllable:No
Description:Set true to output full internal Newton iteration history at times determined by `internal_solve_output_on`. If false, only a summary is output.
- internal_solve_output_onon_errorWhen to output internal Newton solve information
Default:on_error
C++ Type:MooseEnum
Options:never, on_error, always
Controllable:No
Description:When to output internal Newton solve information
Debug 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_PUZRY_cladding_burst_tests/analysis/puzry-11/puzry-11_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-30/puzry-30_aniso.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-01/puzry-01_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-05/puzry-05_aniso.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)
- (test/tests/solid_mechanics/zry_creep/erbacher/ad_operating_to_loca_hill_creep_5.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-16/puzry-16_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-04/puzry-04_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-18/puzry-18_aniso.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_PUZRY_cladding_burst_tests/analysis/puzry-15/puzry-15_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_PUZRY_cladding_burst_tests/analysis/puzry-20/puzry-20_aniso.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-25/puzry-25_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-26/puzry-26_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-12/puzry-12_aniso.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_10MPa/rebeka_singlerod_2d_10MPa_1pt5_aniso.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-08/puzry-08_aniso.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_04MPa/rebeka_singlerod_2d_04MPa_aniso.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_06MPa/rebeka_singlerod_2d_06MPa_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-23/puzry-23_aniso.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-07/puzry-07_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-22/puzry-22_aniso.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_02MPa/rebeka_singlerod_2d_02MPa_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-14/puzry-14_aniso.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_REBEKA_cladding_burst_tests/analysis/rebeka_2d_10MPa/rebeka_singlerod_2d_10MPa_aniso.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-21/puzry-21_aniso.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_14MPa/rebeka_singlerod_2d_14MPa_aniso.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-19/puzry-19_aniso.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_ORNL_cladding_burst_tests/analysis/Zr2_2/ornl_zr2_2_aniso.i)
- (assessment/LWR/validation/LOCA_ANL_cladding_burst_tests/analysis/OCL11/OCL11_ad.i)
- (assessment/LWR/validation/LOCA_ORNL_cladding_burst_tests/analysis/Zr4_1/ornl_zr4_1_ad_hill.i)
- (assessment/LWR/validation/LOCA_REBEKA_cladding_burst_tests/analysis/rebeka_2d_08MPa/rebeka_singlerod_2d_08MPa_aniso.i)
- (test/tests/solid_mechanics/zry_creep/erbacher/ad_operating_to_loca_hill_creep_5_temperature.i)
- (assessment/LWR/validation/LOCA_PUZRY_cladding_burst_tests/analysis/puzry-02/puzry-02_aniso.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_01MPa/rebeka_singlerod_2d_01MPa_aniso.i)
References
- Gyeong-Ha Choi, Chang-Hwan Shin, Jae Yong Kim, and Byoung Jae Kim.
Circumferential steady-state creep test and analysis of zircaloy-4 fuel cladding.
Nuclear Engineering and Technology, 2021.[BibTeX]
@article{choi2021circumferential, author = "Choi, Gyeong-Ha and Shin, Chang-Hwan and Kim, Jae Yong and Kim, Byoung Jae", title = "Circumferential steady-state creep test and analysis of Zircaloy-4 fuel cladding", journal = "Nuclear Engineering and Technology", year = "2021", publisher = "Elsevier" } - C.E.L. Hunt.
Anisotropic theory and the measurement and use of the anisotropic factors for zircaloy-4 fuel sheaths.
Structural mechanics in reactor technology, 1975.[BibTeX]
@article{hunt1975anisotopic, author = "Hunt, C.E.L.", title = "Anisotropic Theory and the Measurement and Use of the Anisotropic Factors for Zircaloy-4 Fuel Sheaths", year = "1975", journal = "Structural mechanics in reactor technology", publisher = "IASMiRT" } - H. E. Rosinger, J. Bowden, and R. S. W. Shewfelt.
The anisotropic creep behaviour of Zircaloy-4 fuel cladding at 1073 K.
Technical Report, Atomic Energy of Canada Ltd., Pinawa, Manitoba, Whiteshell Nuclear Research Establishment., 1982.[BibTeX]
@techreport{rosinger1982anisotropic, author = "Rosinger, H. E. and Bowden, J. and Shewfelt, R. S. W.", title = "The anisotropic creep behaviour of {Z}ircaloy-4 fuel cladding at 1073 {K}", year = "1982", address = "Pinawa, Manitoba, Whiteshell Nuclear Research Establishment.", institution = "Atomic Energy of Canada Ltd." }
(test/tests/solid_mechanics/zry_creep/erbacher/ad_operating_to_loca_hill_creep_5.i)
# This test case is prepared to test the transition from the standard, or normal operation creep to loca creep in ZryCreepUpdate..
# There are a series of 5 tests, with different effective stress, temperature, and fraction of beta phase.
#
# - Geometry:
# 1x1x1 cube, single element
#
# - Temperature = 1250 K
#
# - Boundary conditions:
# Symetric boundary conditions for uniform expansion or contraction (in xy-plane disp_z = 0, xz-plane disp_y = 0, yz-plane disp_x = 0)
#
# - Stresses
# 5 MPa applied to the top of the block. This is the effective stress.
#
#
# - Loca creep rate from the Norton power equation:
#
# Cs. Gyori, Z. Hozer, K. Lassmann, A. Schubert, J. van de Laar, M. Cvan, B. Hatala,
# Conserted Actions (FISA-2003), Proceedings - EUR 21026, Luxembourg, 10-13 November 2003, p. 584
# and
#
# V. J. Betten, Creep Mechanics, Springer, 2002. p. 327.
#
# Loca Thermal Creep rate = A * exp(-Q/R*T + B(x)) * (sigma_effective)^n
#
# where A, Q, and n depend on the fraction of beta phase, phi, which is supplied by the material model ZrPhase.C
#
# ln(A_ab) = (1-phi)*ln(A_a) + phi*ln(A_b)
# Q_ab = (1-phi)*Q_a + phi*Q_b
# n_ab = (1-phi)*n_a + phi*n_b
#
# Phase Temp(K) A(MPa^-n s^-1) Q(J/mol) n
# a(alpha) 900-1085 1.94e4 320,000 5.89
# b(beta) 1248-1873 7.9 142,000 3.78
#
# In this test, temperature = 1150K and stays constant. The creep coefficients A, Q, and n values correspond to the beta phase =
# 0. B(x) = 0 for now (a third degree polynomial of the oxygen weight concentration of the cladding).
#
# Because the temperature in this test remains above the lower bound for the loca creep regime,
# the standard Matsuo thermal creep model is not used in this test.
#
# - Closed form solution results:
# For Temperature = 1250K, and temperature_loca_creep_begin = 900K, where the fraction of beta
# phase is 0.9842320, the creep rate, from the loca model is,
#
# where A_alpha = 19370, Q_alpha = 329070.0, n_alpha = 5.89,
# and A_beta = 7.9, Q_beta = 1.41919e+05, and n_beta = 3.78
# such that the weighted paramaters, using the expressions given as a function of phi above, are
# A_ab = 8.9345, Q_ab = 144870, n_ab = 3.813
#
# creep_rate_loca = 0.003651 1/s (at temperature = 1250 K, beta fraction 0.9842320)
#
# The Bison-calculated creep strain rate = 0.003651 1/s.
#
#
#--------------------------------------------------------------------------------
[Mesh]
[mesh]
type = FileMeshGenerator
file = cube.e
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[temp]
initial_condition = 1250
[]
[]
[AuxVariables]
[ratep_zrphase] # rate parameter
order = CONSTANT
family = MONOMIAL
[]
[fract_bp_equilibrium] # equilibrium beta/alpha phase fraction
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # actual beta/alpha phase fraction
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 99 100'
y = '0 0 0.01'
[]
[temperature_function]
type = PiecewiseLinear
x = '0 10'
y = '1250 1250'
[]
[time_function]
type = PiecewiseLinear
x = '0 98 99 100'
y = '10 10 0.01 0.01'
[]
[]
[Physics/SolidMechanics/QuasiStatic/clad]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz creep_strain_xx creep_strain_yy creep_strain_zz vonmises_stress'
use_automatic_differentiation = true
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[rateparam]
type = MaterialRealAux
variable = ratep_zrphase
property = ratep_zrphase
[]
[fractbp_eq]
type = MaterialRealAux
variable = fract_bp_equilibrium
property = fract_bp_equilibrium
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate_aux]
type = ADMaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[effective_creep_strain]
type = ADMaterialRealAux
variable = effective_creep_strain
property = effective_creep_strain
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 5
factor = 5e8
function = pressure_function
use_automatic_differentiation = true
[]
[]
[u_x_fix]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[]
[u_y_fix]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.0
[]
[u_z_fix]
type = DirichletBC
variable = disp_z
boundary = 3
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
variable = temp
boundary = 4
function = temperature_function
[]
[]
[Materials]
# Model for Zircaloy phase transition
[phase]
type = ZrPhase
temperature = temp
numerical_method = 2
[]
[converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'zry_thermal_creep'
[]
[hill]
type = ADHillConstants
hill_constants = "0.5 0.5 0.5 1.0 1.0 1.0"
[]
[zry_thermal_creep]
type = ADZryAnisoCreepLOCAUpdate
high_temperature_creep_model = erbacher
temperature = temp
model_primary_creep = false
model_irradiation_creep = false
fract_beta_phase_name = 'ad_fract_beta_phase'
[]
[clad_density]
type = ADStrainAdjustedDensity
strain_free_density = 6500
[]
[thermal]
type = ADHeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 100.
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
automatic_scaling = true
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-14
l_tol = 1e-5
start_time = 0.0
end_time = 100
dtmin = 0.1
timestep_tolerance = 2e-13
[TimeStepper]
type = FunctionDT
function = time_function
[]
[]
[Outputs]
file_base = operating_to_loca_hill_creep_5_exodus
csv = true
[exodus]
type = Exodus
[]
[]
(test/tests/solid_mechanics/zry_creep/erbacher/ad_operating_to_loca_hill_creep_5.i)
# This test case is prepared to test the transition from the standard, or normal operation creep to loca creep in ZryCreepUpdate..
# There are a series of 5 tests, with different effective stress, temperature, and fraction of beta phase.
#
# - Geometry:
# 1x1x1 cube, single element
#
# - Temperature = 1250 K
#
# - Boundary conditions:
# Symetric boundary conditions for uniform expansion or contraction (in xy-plane disp_z = 0, xz-plane disp_y = 0, yz-plane disp_x = 0)
#
# - Stresses
# 5 MPa applied to the top of the block. This is the effective stress.
#
#
# - Loca creep rate from the Norton power equation:
#
# Cs. Gyori, Z. Hozer, K. Lassmann, A. Schubert, J. van de Laar, M. Cvan, B. Hatala,
# Conserted Actions (FISA-2003), Proceedings - EUR 21026, Luxembourg, 10-13 November 2003, p. 584
# and
#
# V. J. Betten, Creep Mechanics, Springer, 2002. p. 327.
#
# Loca Thermal Creep rate = A * exp(-Q/R*T + B(x)) * (sigma_effective)^n
#
# where A, Q, and n depend on the fraction of beta phase, phi, which is supplied by the material model ZrPhase.C
#
# ln(A_ab) = (1-phi)*ln(A_a) + phi*ln(A_b)
# Q_ab = (1-phi)*Q_a + phi*Q_b
# n_ab = (1-phi)*n_a + phi*n_b
#
# Phase Temp(K) A(MPa^-n s^-1) Q(J/mol) n
# a(alpha) 900-1085 1.94e4 320,000 5.89
# b(beta) 1248-1873 7.9 142,000 3.78
#
# In this test, temperature = 1150K and stays constant. The creep coefficients A, Q, and n values correspond to the beta phase =
# 0. B(x) = 0 for now (a third degree polynomial of the oxygen weight concentration of the cladding).
#
# Because the temperature in this test remains above the lower bound for the loca creep regime,
# the standard Matsuo thermal creep model is not used in this test.
#
# - Closed form solution results:
# For Temperature = 1250K, and temperature_loca_creep_begin = 900K, where the fraction of beta
# phase is 0.9842320, the creep rate, from the loca model is,
#
# where A_alpha = 19370, Q_alpha = 329070.0, n_alpha = 5.89,
# and A_beta = 7.9, Q_beta = 1.41919e+05, and n_beta = 3.78
# such that the weighted paramaters, using the expressions given as a function of phi above, are
# A_ab = 8.9345, Q_ab = 144870, n_ab = 3.813
#
# creep_rate_loca = 0.003651 1/s (at temperature = 1250 K, beta fraction 0.9842320)
#
# The Bison-calculated creep strain rate = 0.003651 1/s.
#
#
#--------------------------------------------------------------------------------
[Mesh]
[mesh]
type = FileMeshGenerator
file = cube.e
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[temp]
initial_condition = 1250
[]
[]
[AuxVariables]
[ratep_zrphase] # rate parameter
order = CONSTANT
family = MONOMIAL
[]
[fract_bp_equilibrium] # equilibrium beta/alpha phase fraction
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # actual beta/alpha phase fraction
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 99 100'
y = '0 0 0.01'
[]
[temperature_function]
type = PiecewiseLinear
x = '0 10'
y = '1250 1250'
[]
[time_function]
type = PiecewiseLinear
x = '0 98 99 100'
y = '10 10 0.01 0.01'
[]
[]
[Physics/SolidMechanics/QuasiStatic/clad]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz creep_strain_xx creep_strain_yy creep_strain_zz vonmises_stress'
use_automatic_differentiation = true
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[rateparam]
type = MaterialRealAux
variable = ratep_zrphase
property = ratep_zrphase
[]
[fractbp_eq]
type = MaterialRealAux
variable = fract_bp_equilibrium
property = fract_bp_equilibrium
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate_aux]
type = ADMaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[effective_creep_strain]
type = ADMaterialRealAux
variable = effective_creep_strain
property = effective_creep_strain
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 5
factor = 5e8
function = pressure_function
use_automatic_differentiation = true
[]
[]
[u_x_fix]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[]
[u_y_fix]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.0
[]
[u_z_fix]
type = DirichletBC
variable = disp_z
boundary = 3
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
variable = temp
boundary = 4
function = temperature_function
[]
[]
[Materials]
# Model for Zircaloy phase transition
[phase]
type = ZrPhase
temperature = temp
numerical_method = 2
[]
[converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'zry_thermal_creep'
[]
[hill]
type = ADHillConstants
hill_constants = "0.5 0.5 0.5 1.0 1.0 1.0"
[]
[zry_thermal_creep]
type = ADZryAnisoCreepLOCAUpdate
high_temperature_creep_model = erbacher
temperature = temp
model_primary_creep = false
model_irradiation_creep = false
fract_beta_phase_name = 'ad_fract_beta_phase'
[]
[clad_density]
type = ADStrainAdjustedDensity
strain_free_density = 6500
[]
[thermal]
type = ADHeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 100.
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
automatic_scaling = true
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-14
l_tol = 1e-5
start_time = 0.0
end_time = 100
dtmin = 0.1
timestep_tolerance = 2e-13
[TimeStepper]
type = FunctionDT
function = time_function
[]
[]
[Outputs]
file_base = operating_to_loca_hill_creep_5_exodus
csv = true
[exodus]
type = Exodus
[]
[]
(test/tests/solid_mechanics/zry_creep/erbacher/ad_operating_to_loca_hill_creep_5.i)
# This test case is prepared to test the transition from the standard, or normal operation creep to loca creep in ZryCreepUpdate..
# There are a series of 5 tests, with different effective stress, temperature, and fraction of beta phase.
#
# - Geometry:
# 1x1x1 cube, single element
#
# - Temperature = 1250 K
#
# - Boundary conditions:
# Symetric boundary conditions for uniform expansion or contraction (in xy-plane disp_z = 0, xz-plane disp_y = 0, yz-plane disp_x = 0)
#
# - Stresses
# 5 MPa applied to the top of the block. This is the effective stress.
#
#
# - Loca creep rate from the Norton power equation:
#
# Cs. Gyori, Z. Hozer, K. Lassmann, A. Schubert, J. van de Laar, M. Cvan, B. Hatala,
# Conserted Actions (FISA-2003), Proceedings - EUR 21026, Luxembourg, 10-13 November 2003, p. 584
# and
#
# V. J. Betten, Creep Mechanics, Springer, 2002. p. 327.
#
# Loca Thermal Creep rate = A * exp(-Q/R*T + B(x)) * (sigma_effective)^n
#
# where A, Q, and n depend on the fraction of beta phase, phi, which is supplied by the material model ZrPhase.C
#
# ln(A_ab) = (1-phi)*ln(A_a) + phi*ln(A_b)
# Q_ab = (1-phi)*Q_a + phi*Q_b
# n_ab = (1-phi)*n_a + phi*n_b
#
# Phase Temp(K) A(MPa^-n s^-1) Q(J/mol) n
# a(alpha) 900-1085 1.94e4 320,000 5.89
# b(beta) 1248-1873 7.9 142,000 3.78
#
# In this test, temperature = 1150K and stays constant. The creep coefficients A, Q, and n values correspond to the beta phase =
# 0. B(x) = 0 for now (a third degree polynomial of the oxygen weight concentration of the cladding).
#
# Because the temperature in this test remains above the lower bound for the loca creep regime,
# the standard Matsuo thermal creep model is not used in this test.
#
# - Closed form solution results:
# For Temperature = 1250K, and temperature_loca_creep_begin = 900K, where the fraction of beta
# phase is 0.9842320, the creep rate, from the loca model is,
#
# where A_alpha = 19370, Q_alpha = 329070.0, n_alpha = 5.89,
# and A_beta = 7.9, Q_beta = 1.41919e+05, and n_beta = 3.78
# such that the weighted paramaters, using the expressions given as a function of phi above, are
# A_ab = 8.9345, Q_ab = 144870, n_ab = 3.813
#
# creep_rate_loca = 0.003651 1/s (at temperature = 1250 K, beta fraction 0.9842320)
#
# The Bison-calculated creep strain rate = 0.003651 1/s.
#
#
#--------------------------------------------------------------------------------
[Mesh]
[mesh]
type = FileMeshGenerator
file = cube.e
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[temp]
initial_condition = 1250
[]
[]
[AuxVariables]
[ratep_zrphase] # rate parameter
order = CONSTANT
family = MONOMIAL
[]
[fract_bp_equilibrium] # equilibrium beta/alpha phase fraction
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # actual beta/alpha phase fraction
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 99 100'
y = '0 0 0.01'
[]
[temperature_function]
type = PiecewiseLinear
x = '0 10'
y = '1250 1250'
[]
[time_function]
type = PiecewiseLinear
x = '0 98 99 100'
y = '10 10 0.01 0.01'
[]
[]
[Physics/SolidMechanics/QuasiStatic/clad]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz creep_strain_xx creep_strain_yy creep_strain_zz vonmises_stress'
use_automatic_differentiation = true
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[rateparam]
type = MaterialRealAux
variable = ratep_zrphase
property = ratep_zrphase
[]
[fractbp_eq]
type = MaterialRealAux
variable = fract_bp_equilibrium
property = fract_bp_equilibrium
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate_aux]
type = ADMaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[effective_creep_strain]
type = ADMaterialRealAux
variable = effective_creep_strain
property = effective_creep_strain
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 5
factor = 5e8
function = pressure_function
use_automatic_differentiation = true
[]
[]
[u_x_fix]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[]
[u_y_fix]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.0
[]
[u_z_fix]
type = DirichletBC
variable = disp_z
boundary = 3
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
variable = temp
boundary = 4
function = temperature_function
[]
[]
[Materials]
# Model for Zircaloy phase transition
[phase]
type = ZrPhase
temperature = temp
numerical_method = 2
[]
[converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'zry_thermal_creep'
[]
[hill]
type = ADHillConstants
hill_constants = "0.5 0.5 0.5 1.0 1.0 1.0"
[]
[zry_thermal_creep]
type = ADZryAnisoCreepLOCAUpdate
high_temperature_creep_model = erbacher
temperature = temp
model_primary_creep = false
model_irradiation_creep = false
fract_beta_phase_name = 'ad_fract_beta_phase'
[]
[clad_density]
type = ADStrainAdjustedDensity
strain_free_density = 6500
[]
[thermal]
type = ADHeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 100.
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
automatic_scaling = true
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-14
l_tol = 1e-5
start_time = 0.0
end_time = 100
dtmin = 0.1
timestep_tolerance = 2e-13
[TimeStepper]
type = FunctionDT
function = time_function
[]
[]
[Outputs]
file_base = operating_to_loca_hill_creep_5_exodus
csv = true
[exodus]
type = Exodus
[]
[]
(test/tests/solid_mechanics/zry_creep/erbacher/ad_operating_to_loca_hill_creep_5_temperature.i)
# The purpose of this test is to avoid regression in the use of anisotropic temperature
# dependent Hill parameters (F, G, H) when used in conjunction with advanced zry
# creep models for LOCA.
[Mesh]
[mesh]
type = FileMeshGenerator
file = cube.e
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[temp]
initial_condition = 1250
[]
[]
[AuxVariables]
[ratep_zrphase] # rate parameter
order = CONSTANT
family = MONOMIAL
[]
[fract_bp_equilibrium] # equilibrium beta/alpha phase fraction
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # actual beta/alpha phase fraction
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hill_constants_f]
order = CONSTANT
family = MONOMIAL
[]
[hill_constants_g]
order = CONSTANT
family = MONOMIAL
[]
[hill_constants_h]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 99 100'
y = '0 0 0.01'
[]
[temperature_function]
type = PiecewiseLinear
x = '0 100'
y = '1250 1400'
[]
[time_function]
type = PiecewiseLinear
x = '0 98 99 100'
y = '10 10 0.01 0.01'
[]
[F]
type = PiecewiseLinear
x = '1250 1400'
y = '0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '1250 1400'
y = '0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '1250 1400'
y = '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]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz creep_strain_xx creep_strain_yy creep_strain_zz vonmises_stress'
use_automatic_differentiation = true
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[rateparam]
type = MaterialRealAux
variable = ratep_zrphase
property = ratep_zrphase
[]
[fractbp_eq]
type = MaterialRealAux
variable = fract_bp_equilibrium
property = fract_bp_equilibrium
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate_aux]
type = ADMaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[effective_creep_strain]
type = ADMaterialRealAux
variable = effective_creep_strain
property = effective_creep_strain
[]
[hill_constant_f]
type = MaterialStdVectorAux
property = hill_constants
variable = hill_constants_f
index = 0
[]
[hill_constant_g]
type = MaterialStdVectorAux
property = hill_constants
variable = hill_constants_g
index = 1
[]
[hill_constant_h]
type = MaterialStdVectorAux
property = hill_constants
variable = hill_constants_h
index = 2
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 5
factor = 5e8
function = pressure_function
use_automatic_differentiation = true
[]
[]
[u_x_fix]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[]
[u_y_fix]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.0
[]
[u_z_fix]
type = DirichletBC
variable = disp_z
boundary = 3
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
variable = temp
boundary = 4
function = temperature_function
[]
[]
[Materials]
# Model for Zircaloy phase transition
[phase]
type = ZrPhase
temperature = temp
numerical_method = 2
[]
[converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'zry_thermal_creep'
[]
[hill]
type = ADHillConstants
hill_constants = "0.738 0.175 0.588 1.0 1.0 1.0"
temperature = temp
function_names = "F G H L M N"
[]
[zry_thermal_creep]
type = ADZryAnisoCreepLOCAUpdate
high_temperature_creep_model = erbacher
temperature = temp
model_primary_creep = false
model_irradiation_creep = false
fract_beta_phase_name = 'ad_fract_beta_phase'
[]
[clad_density]
type = ADStrainAdjustedDensity
strain_free_density = 6500
[]
[thermal]
type = ADHeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 100.
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
automatic_scaling = true
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-10
nl_abs_tol = 1e-14
l_tol = 1e-5
start_time = 0.0
end_time = 100
dtmin = 0.1
timestep_tolerance = 2e-13
[TimeStepper]
type = FunctionDT
function = time_function
[]
[]
[Outputs]
file_base = operating_to_loca_hill_creep_5_temp_exodus
csv = true
[exodus]
type = Exodus
[]
[]
(test/tests/solid_mechanics/zry_creep/erbacher/ad_operating_to_loca_hill_creep_5_temperature.i)
# The purpose of this test is to avoid regression in the use of anisotropic temperature
# dependent Hill parameters (F, G, H) when used in conjunction with advanced zry
# creep models for LOCA.
[Mesh]
[mesh]
type = FileMeshGenerator
file = cube.e
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[temp]
initial_condition = 1250
[]
[]
[AuxVariables]
[ratep_zrphase] # rate parameter
order = CONSTANT
family = MONOMIAL
[]
[fract_bp_equilibrium] # equilibrium beta/alpha phase fraction
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # actual beta/alpha phase fraction
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hill_constants_f]
order = CONSTANT
family = MONOMIAL
[]
[hill_constants_g]
order = CONSTANT
family = MONOMIAL
[]
[hill_constants_h]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 99 100'
y = '0 0 0.01'
[]
[temperature_function]
type = PiecewiseLinear
x = '0 100'
y = '1250 1400'
[]
[time_function]
type = PiecewiseLinear
x = '0 98 99 100'
y = '10 10 0.01 0.01'
[]
[F]
type = PiecewiseLinear
x = '1250 1400'
y = '0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '1250 1400'
y = '0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '1250 1400'
y = '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]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz creep_strain_xx creep_strain_yy creep_strain_zz vonmises_stress'
use_automatic_differentiation = true
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[rateparam]
type = MaterialRealAux
variable = ratep_zrphase
property = ratep_zrphase
[]
[fractbp_eq]
type = MaterialRealAux
variable = fract_bp_equilibrium
property = fract_bp_equilibrium
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate_aux]
type = ADMaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[effective_creep_strain]
type = ADMaterialRealAux
variable = effective_creep_strain
property = effective_creep_strain
[]
[hill_constant_f]
type = MaterialStdVectorAux
property = hill_constants
variable = hill_constants_f
index = 0
[]
[hill_constant_g]
type = MaterialStdVectorAux
property = hill_constants
variable = hill_constants_g
index = 1
[]
[hill_constant_h]
type = MaterialStdVectorAux
property = hill_constants
variable = hill_constants_h
index = 2
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 5
factor = 5e8
function = pressure_function
use_automatic_differentiation = true
[]
[]
[u_x_fix]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[]
[u_y_fix]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.0
[]
[u_z_fix]
type = DirichletBC
variable = disp_z
boundary = 3
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
variable = temp
boundary = 4
function = temperature_function
[]
[]
[Materials]
# Model for Zircaloy phase transition
[phase]
type = ZrPhase
temperature = temp
numerical_method = 2
[]
[converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'zry_thermal_creep'
[]
[hill]
type = ADHillConstants
hill_constants = "0.738 0.175 0.588 1.0 1.0 1.0"
temperature = temp
function_names = "F G H L M N"
[]
[zry_thermal_creep]
type = ADZryAnisoCreepLOCAUpdate
high_temperature_creep_model = erbacher
temperature = temp
model_primary_creep = false
model_irradiation_creep = false
fract_beta_phase_name = 'ad_fract_beta_phase'
[]
[clad_density]
type = ADStrainAdjustedDensity
strain_free_density = 6500
[]
[thermal]
type = ADHeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 100.
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
automatic_scaling = true
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-10
nl_abs_tol = 1e-14
l_tol = 1e-5
start_time = 0.0
end_time = 100
dtmin = 0.1
timestep_tolerance = 2e-13
[TimeStepper]
type = FunctionDT
function = time_function
[]
[]
[Outputs]
file_base = operating_to_loca_hill_creep_5_temp_exodus
csv = true
[exodus]
type = Exodus
[]
[]
(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_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'
[]
[]
(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-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-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_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'
[]
[]
(test/tests/solid_mechanics/zry_creep/erbacher/ad_operating_to_loca_hill_creep_5.i)
# This test case is prepared to test the transition from the standard, or normal operation creep to loca creep in ZryCreepUpdate..
# There are a series of 5 tests, with different effective stress, temperature, and fraction of beta phase.
#
# - Geometry:
# 1x1x1 cube, single element
#
# - Temperature = 1250 K
#
# - Boundary conditions:
# Symetric boundary conditions for uniform expansion or contraction (in xy-plane disp_z = 0, xz-plane disp_y = 0, yz-plane disp_x = 0)
#
# - Stresses
# 5 MPa applied to the top of the block. This is the effective stress.
#
#
# - Loca creep rate from the Norton power equation:
#
# Cs. Gyori, Z. Hozer, K. Lassmann, A. Schubert, J. van de Laar, M. Cvan, B. Hatala,
# Conserted Actions (FISA-2003), Proceedings - EUR 21026, Luxembourg, 10-13 November 2003, p. 584
# and
#
# V. J. Betten, Creep Mechanics, Springer, 2002. p. 327.
#
# Loca Thermal Creep rate = A * exp(-Q/R*T + B(x)) * (sigma_effective)^n
#
# where A, Q, and n depend on the fraction of beta phase, phi, which is supplied by the material model ZrPhase.C
#
# ln(A_ab) = (1-phi)*ln(A_a) + phi*ln(A_b)
# Q_ab = (1-phi)*Q_a + phi*Q_b
# n_ab = (1-phi)*n_a + phi*n_b
#
# Phase Temp(K) A(MPa^-n s^-1) Q(J/mol) n
# a(alpha) 900-1085 1.94e4 320,000 5.89
# b(beta) 1248-1873 7.9 142,000 3.78
#
# In this test, temperature = 1150K and stays constant. The creep coefficients A, Q, and n values correspond to the beta phase =
# 0. B(x) = 0 for now (a third degree polynomial of the oxygen weight concentration of the cladding).
#
# Because the temperature in this test remains above the lower bound for the loca creep regime,
# the standard Matsuo thermal creep model is not used in this test.
#
# - Closed form solution results:
# For Temperature = 1250K, and temperature_loca_creep_begin = 900K, where the fraction of beta
# phase is 0.9842320, the creep rate, from the loca model is,
#
# where A_alpha = 19370, Q_alpha = 329070.0, n_alpha = 5.89,
# and A_beta = 7.9, Q_beta = 1.41919e+05, and n_beta = 3.78
# such that the weighted paramaters, using the expressions given as a function of phi above, are
# A_ab = 8.9345, Q_ab = 144870, n_ab = 3.813
#
# creep_rate_loca = 0.003651 1/s (at temperature = 1250 K, beta fraction 0.9842320)
#
# The Bison-calculated creep strain rate = 0.003651 1/s.
#
#
#--------------------------------------------------------------------------------
[Mesh]
[mesh]
type = FileMeshGenerator
file = cube.e
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[temp]
initial_condition = 1250
[]
[]
[AuxVariables]
[ratep_zrphase] # rate parameter
order = CONSTANT
family = MONOMIAL
[]
[fract_bp_equilibrium] # equilibrium beta/alpha phase fraction
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # actual beta/alpha phase fraction
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 99 100'
y = '0 0 0.01'
[]
[temperature_function]
type = PiecewiseLinear
x = '0 10'
y = '1250 1250'
[]
[time_function]
type = PiecewiseLinear
x = '0 98 99 100'
y = '10 10 0.01 0.01'
[]
[]
[Physics/SolidMechanics/QuasiStatic/clad]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz creep_strain_xx creep_strain_yy creep_strain_zz vonmises_stress'
use_automatic_differentiation = true
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[rateparam]
type = MaterialRealAux
variable = ratep_zrphase
property = ratep_zrphase
[]
[fractbp_eq]
type = MaterialRealAux
variable = fract_bp_equilibrium
property = fract_bp_equilibrium
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate_aux]
type = ADMaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[effective_creep_strain]
type = ADMaterialRealAux
variable = effective_creep_strain
property = effective_creep_strain
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 5
factor = 5e8
function = pressure_function
use_automatic_differentiation = true
[]
[]
[u_x_fix]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[]
[u_y_fix]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.0
[]
[u_z_fix]
type = DirichletBC
variable = disp_z
boundary = 3
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
variable = temp
boundary = 4
function = temperature_function
[]
[]
[Materials]
# Model for Zircaloy phase transition
[phase]
type = ZrPhase
temperature = temp
numerical_method = 2
[]
[converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'zry_thermal_creep'
[]
[hill]
type = ADHillConstants
hill_constants = "0.5 0.5 0.5 1.0 1.0 1.0"
[]
[zry_thermal_creep]
type = ADZryAnisoCreepLOCAUpdate
high_temperature_creep_model = erbacher
temperature = temp
model_primary_creep = false
model_irradiation_creep = false
fract_beta_phase_name = 'ad_fract_beta_phase'
[]
[clad_density]
type = ADStrainAdjustedDensity
strain_free_density = 6500
[]
[thermal]
type = ADHeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 100.
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
automatic_scaling = true
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-8
nl_abs_tol = 1e-14
l_tol = 1e-5
start_time = 0.0
end_time = 100
dtmin = 0.1
timestep_tolerance = 2e-13
[TimeStepper]
type = FunctionDT
function = time_function
[]
[]
[Outputs]
file_base = operating_to_loca_hill_creep_5_exodus
csv = true
[exodus]
type = Exodus
[]
[]
(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_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-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'
[]
[]
(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_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_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_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_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_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-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_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_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_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_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-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_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_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_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_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-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_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_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_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_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_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_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'
[]
[]
(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_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-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_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_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_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_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'
[]
[]
(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
[]
[]
(test/tests/solid_mechanics/zry_creep/erbacher/ad_operating_to_loca_hill_creep_5_temperature.i)
# The purpose of this test is to avoid regression in the use of anisotropic temperature
# dependent Hill parameters (F, G, H) when used in conjunction with advanced zry
# creep models for LOCA.
[Mesh]
[mesh]
type = FileMeshGenerator
file = cube.e
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[temp]
initial_condition = 1250
[]
[]
[AuxVariables]
[ratep_zrphase] # rate parameter
order = CONSTANT
family = MONOMIAL
[]
[fract_bp_equilibrium] # equilibrium beta/alpha phase fraction
order = CONSTANT
family = MONOMIAL
[]
[fract_beta_phase] # actual beta/alpha phase fraction
order = CONSTANT
family = MONOMIAL
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hill_constants_f]
order = CONSTANT
family = MONOMIAL
[]
[hill_constants_g]
order = CONSTANT
family = MONOMIAL
[]
[hill_constants_h]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[pressure_function]
type = PiecewiseLinear
x = '0 99 100'
y = '0 0 0.01'
[]
[temperature_function]
type = PiecewiseLinear
x = '0 100'
y = '1250 1400'
[]
[time_function]
type = PiecewiseLinear
x = '0 98 99 100'
y = '10 10 0.01 0.01'
[]
[F]
type = PiecewiseLinear
x = '1250 1400'
y = '0.738 0.57'
[]
[G]
type = PiecewiseLinear
x = '1250 1400'
y = '0.174 0.45'
[]
[H]
type = PiecewiseLinear
x = '1250 1400'
y = '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]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz creep_strain_xx creep_strain_yy creep_strain_zz vonmises_stress'
use_automatic_differentiation = true
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
variable = temp
[]
[]
[AuxKernels]
[rateparam]
type = MaterialRealAux
variable = ratep_zrphase
property = ratep_zrphase
[]
[fractbp_eq]
type = MaterialRealAux
variable = fract_bp_equilibrium
property = fract_bp_equilibrium
[]
[fract_bphase]
type = MaterialRealAux
variable = fract_beta_phase
property = fract_beta_phase
[]
[creep_rate_aux]
type = ADMaterialRealAux
variable = creep_rate_aux
property = creep_rate
execute_on = timestep_end
[]
[effective_creep_strain]
type = ADMaterialRealAux
variable = effective_creep_strain
property = effective_creep_strain
[]
[hill_constant_f]
type = MaterialStdVectorAux
property = hill_constants
variable = hill_constants_f
index = 0
[]
[hill_constant_g]
type = MaterialStdVectorAux
property = hill_constants
variable = hill_constants_g
index = 1
[]
[hill_constant_h]
type = MaterialStdVectorAux
property = hill_constants
variable = hill_constants_h
index = 2
[]
[]
[BCs]
[Pressure]
[outer_surface]
boundary = 5
factor = 5e8
function = pressure_function
use_automatic_differentiation = true
[]
[]
[u_x_fix]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[]
[u_y_fix]
type = DirichletBC
variable = disp_y
boundary = 2
value = 0.0
[]
[u_z_fix]
type = DirichletBC
variable = disp_z
boundary = 3
value = 0.0
[]
[temp_bc]
type = FunctionDirichletBC
variable = temp
boundary = 4
function = temperature_function
[]
[]
[Materials]
# Model for Zircaloy phase transition
[phase]
type = ZrPhase
temperature = temp
numerical_method = 2
[]
[converter]
type = MaterialADConverter
reg_props_in = 'fract_beta_phase'
ad_props_out = 'ad_fract_beta_phase'
[]
[elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.0e11
poissons_ratio = 0.3
[]
[stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'zry_thermal_creep'
[]
[hill]
type = ADHillConstants
hill_constants = "0.738 0.175 0.588 1.0 1.0 1.0"
temperature = temp
function_names = "F G H L M N"
[]
[zry_thermal_creep]
type = ADZryAnisoCreepLOCAUpdate
high_temperature_creep_model = erbacher
temperature = temp
model_primary_creep = false
model_irradiation_creep = false
fract_beta_phase_name = 'ad_fract_beta_phase'
[]
[clad_density]
type = ADStrainAdjustedDensity
strain_free_density = 6500
[]
[thermal]
type = ADHeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 100.
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
automatic_scaling = true
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-10
nl_abs_tol = 1e-14
l_tol = 1e-5
start_time = 0.0
end_time = 100
dtmin = 0.1
timestep_tolerance = 2e-13
[TimeStepper]
type = FunctionDT
function = time_function
[]
[]
[Outputs]
file_base = operating_to_loca_hill_creep_5_temp_exodus
csv = true
[exodus]
type = Exodus
[]
[]
(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_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_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
[]
[]