- temperatureCoupled temperature.
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled temperature.
UPuZrThermal
Computes the thermal conductivity and specific heat for U-Pu-Zr fuels based on mole fractions, porosity, and temperature.
Description
This UPuZrThermal and ADUPuZrThermal calculate the thermal conductivity and heat capacity of U-Pu-Zr, where and refers to the atomic fraction of Pu and Zr respectively. When weight fractions are required for individual models, this model internally converts the atom fractions into weight fractions: where is the atomic weight of each element in kg/mol, and is the average atomic mass of the fuel mixture in kg/mol.
Thermal Conductivity Models
A number of thermal conductivity models can be selected via the thcond_model parameter. Each model is described below. Note, these models calculate the fully dense thermal conductivity, with the porosity correction applied later: Here, is the thermal conductivity of the fuel as a function of temperature , composition, porosity , and logged porosity , given the fresh-fuel thermal conductivity , and the porosity correction .
The LANL model is the default for thcond_model, and is the recommended thermal conductivity model.
Constant Model
By setting thcond_model=constant, the can be set to a constant value given by the thermal_conductivity input parameter.
Function Model
By setting thcond_model=function, the can be provided by a MOOSE function named in the thermal_conductivity_func input parameter.
Billone Thermal Conductivity Model
A generic model for the thermal conductivity of U, U-Zr and U-Pu-Zr alloys is given by Billone et al. (1968). The thermal conductivity of unirradiated fuel in units of W/m-K is given by where is the temperature in Kelvin and , , and are temperature coefficients. These coefficients are given by where and are the weight fractions of plutonium and zirconium respectively in the fuel mixture.
Galloway Thermal Conductivity Model
A model for the thermal conductivity of U-Pu-Zr fuel with any concentration of constituents is given by Galloway et al. (2015). Data used to develop the empirical model for thermal conductivity of U-Pu-Zr and U-Zr fresh fuels are obtained from Janney and Papesch (2015), Kim and Hofman (2003), Touloukian et al. (1971), Takahashi et al. (1988), and Bauer (1995). The basis for the model is derived from the formulation given by Touloukian et al. (1971) with coefficient adjustments to minimize the standard deviation of error between data and the current empirical model. The model consists of calculation of the thermal conductivity of each constituent, the thermal conductivity of the binaries U-Zr and Pu-Zr, and finally the thermal conductivity of the ternary UPuZr.
The thermal conductivities in W/m-K for each constituent is calculated by (1)
(2) where is temperature in K. The binary thermal conductivities are calculated by where the adjusted weight fractions for the binary formulations are given as
The correction terms for the binaries are given as
Finally, the ternary thermal conductivity is calculated by (3)
This empirical model gives an average error of -0.02 W/m-K with a standard deviation of 1.46 W/m-K.
Ternary Thermal Conductivity Model: Kim
The ternary thermal conductivity model is very similar to the model used by Galloway, Eq. (3), albeit with different coefficients and different formulation of the ternary thermal conductivity. The original formulation comes from Kim et al. (2014).
The thermal conductivities in W/m-K for each constituent is calculated using Eq. (1) and Eq. (2), with the formulation for plutonium as where is temperature in K. The U-Zr binary thermal conductivity is calculated by: where the adjusted weight fractions for the binary formulations are given as: The correction terms for the U-Zr binary are given as,
The thermal conductivity of the ternary fuel is then where is the weight fraction of plutonium in the fuel and the plutonium thermal conductivity correction is given by
Ternary Thermal Conductivity Model: LANL
Recent work has been applied to extend Kim's model to more data, resulting in new coefficients (Matthews and Unal, 2015). These coefficients are also available as a separate model, designated LANL:
Although only slightly different, when the updated coefficients are plugged into the remainder of the ternary model, the calculation of thermal conductivity results in a standard deviation of less than 1 W/m-K.
Corrected Odaira Thermal Conductivity Model
The main purpose of this model is to provide thermal conductivity approximations during and after melting of the fuel. As such, if no fuel is melting, one of the other thermal conductivity models should be chosen. The model found in Odaira and Arita (2019) had typo errors and an attempt has been made to correct the values to bring the results fairly close to experimental values. Only low Pu approximations from Odaira and Arita (2019) are currently included for ternary fuel.
This model uses the Wiedemann-Franz law to relate the thermal conductivity to electrical conductivity. With the Nordheim's rule, the solid alloy's electrical resistivity relation is assumed to be valid for thermal conductivity as well. As there is no data for liquid U-Pu-Zr's thermal conductivity and the Wiedemann-Franz law is somewhat applicable to liquid alloys (Giordanengo et al., 1999), this model is assumed to be a suitable approximation of liquid U-Pu-Zr thermal conductivity until models based on experimental data become available.
Each separate element's thermal conductivity is approximated by where is temperature in Kelvin and the coefficients , , , and are from Table 1 for each element.
Table 1: Polynomial Coefficients for U, Pu, and Zr
| Element | a | b | c | d |
|---|---|---|---|---|
| U | 21.69 | 0.01837 | 0 | |
| Pu | -1.534 | |||
| Zr | 27.48 | -0.02515 | 0 |
For temperatures above 1300 K, becomes unreliable and goes negative. The value at 1300 K is used for all K. In fact, liquid thermal conductivity data for U, Pu, and Zr would improve these polynomial coefficients as the fits are mainly from data below melting of each element.
Using Nordheim's rule for a binary alloy and applying it to thermal conductivity produces where is the Lorentz number set at W / K and .
Repeating the process provides the approximate ternary alloy thermal conductivity of where .
Porosity Correction Models
As the fuel is irradiated, the thermal conductivity becomes degraded due to the growth of fission gas bubbles. Once these bubbles become interconnected, the porosity degradation will improve slightly. Several models exist to account for the impact of gas and sodium filled porosity on the thermal conductivity, with a handful of these models implemented here via the 'porosity_model' input parameter, and described below.
Fractional Porosity Correction Model
Following formulations in Billone et al. (1968) and Hofman et al. (2019) the degradation of the thermal conductivity can be given using a fractional formulation, (4) where is the porosity_factor input parameter, typically taken as 2.5 for conservatism as recommended by Billone et al. (1968).
Power Porosity Correction Model
Following the formulation given in Bauer (1995), the porosity correction factor can also be expressed using a power term, where is the porosity_factor input parameter, typically taken as 1.72.
Logged Porosity Correction Model
A formulation for the porosity correction due to gas and sodium filled porosity has been adopted based on the original formulation in Bauer (1995). Here, the onset of porosity interconnection results in sodium infiltration into the fuel. Given the amount of sodium-flled porosity, , typically calculated via UPuZrSodiumLogging, the porosity correction can be calculated via, where is the thermal conductivity of sodium computed from SodiumProperties, is the porosity_factor input parameter, typically taken as 1.72, and is the amount of gas filled porosity,
Partially Logged Porosity Correction Model
A second sodium infiltration model based on limited radial infiltration of the sodium is also available. As described in Karahan (2009), a thermal conductivity multiplier can be computed as, (5) where is the total porosity and is a infiltrated porosity correction given by, Here, is the fractional penetration depth of sodium into the fuel, is the thermal conductivity of the solid fuel, and the sodium thermal conductivity is given as, where T is in K and is in W/m/K. The correction factor is applied to thermal conductivity depending on the interconnection of the porosity and position in the fuel. If the porosity of the fuel is less than the porosity interconnection threshold, the porosity correction factor is given by Eq. (4). Also, for positions where sodium does not penetrate (i.e. in the center of the pin) defined by the fractional sodium penetration, the porosity correction factor is also given by Eq. (4). For all other cases, the porosity correction factor is given by Eq. (5).
Specific Heat Capacity Models
There are a few different models available for heat capacity that can be selected using the spheat_model input parameter. These models are described in the following sections. The default model is the Savage formulation, and should be utilized due to model inconsistencies with the formulation of the Karahan model.
Constant Model
By setting spheat_model=constant, the specific heat can be set to a constant value given by the specific_heat input parameter.
Function Model
By setting spheat_model=function, the specific heat can be provided by a MOOSE function named in the specific_heat_func input parameter.
Savage Heat Capacity
The correlation for heat capacity from Savage is split into the low temperature region and the high temperature region: (6)
(7) where is temperature in C, and is given in cal/mol-C. A simple linear interpolation is used for the region: (8) where and are the transition temperature 600 C and 650 C respectively.
Lastly, is converted from cal/(mol-C) to J/(kg-K) by multiplying Eq. (6), Eq. (7), or Eq. (8) by 4.184 (J/cal) and dividing by 0.205 (kg/mol). It is important to note that the kg to mol conversion is kept constant, as it applies directly to the data captured by Savage. Changing the conversion factor will result in a dependency on the concentrations of Pu and Zr in the fuel that is not based on data, as is the case with the Karahan model described in Karahan Heat Capacity.
Karahan Heat Capacity
The specific heat capacity of U-Pu-Zr alloys are dependent upon the phase (, or ) as per Karahan (2009) where the transition temperatures are taken from Savage (2006), as = 600 C and = 650 C.
For the phase: (9) For the phase: (10) For the transition phase, interpolation has been performed such that, In the above equations for specific heat capacity, is the temperature in C and is the average atomic mass of the fuel mixture in kg.
It is worth noting that this model is presented by Karahan (2009) but fails to divide the leading constant term by , leading to miscalculation of the original data from Savage (2006). Furthermore, the original formulation by Savage was for U-15w/oPu-10w/oZr, yet the average atomic mass will be different depending of the concentration of Pu and Zr. This results in a correlation for other concentrations that have no experimental support.
Property Derivatives
ADUPuZrThermal automatically provides the correct derivatives for use in kernel evaluation via the automatic differentiation system. UPuZrThermal computes the derivatives as material properties for use in kernels. The available derivatives are the thermal conductivity with respect to temperature and zirconium, and the specific heat with respect to temperature.
Example Input Syntax
[Materials<<<{"href": "../../syntax/Materials/index.html"}>>>]
[thermal]
type = UPuZrThermal<<<{"description": "Computes the thermal conductivity and specific heat for U-Pu-Zr fuels based on mole fractions, porosity, and temperature.", "href": "UPuZrThermal.html"}>>>
block<<<{"description": "The list of blocks (ids or names) that this object will be applied"}>>> = 0
temperature<<<{"description": "Coupled temperature."}>>> = temp
X_Pu<<<{"description": "Coupled plutonium atom fraction."}>>> = 0.16
X_Zr<<<{"description": "Coupled zirconium atom fraction."}>>> = X_Zr
porosity<<<{"description": "Porosity material property name. Required if porosity_model is not 'none'"}>>> = porosity
outputs<<<{"description": "Vector of output names where you would like to restrict the output of variables(s) associated with this object"}>>> = all
spheat_model<<<{"description": "Specific heat model. Choices are: karahan savage constant function"}>>> = karahan
[]
[](test/tests/upuzr_thermal/test.i)Input Parameters
- A_Pu0.244Atomic weight of plutonium [kg/mol].
Default:0.244
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Atomic weight of plutonium [kg/mol].
- A_U0.238029Atomic weight of uranium [kg/mol].
Default:0.238029
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Atomic weight of uranium [kg/mol].
- A_Zr0.091224Atomic weight of zirconium [kg/mol].
Default:0.091224
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Atomic weight of zirconium [kg/mol].
- Na_depthPellet depth sodium has infiltrated as a percentage of fuel radius. Only required if porosity_model = partially_logged.
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Pellet depth sodium has infiltrated as a percentage of fuel radius. Only required if porosity_model = partially_logged.
- X_Pu-1.0Coupled plutonium atom fraction.
Default:-1.0
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled plutonium atom fraction.
- X_Zr-1.0Coupled zirconium atom fraction.
Default:-1.0
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Coupled zirconium atom fraction.
- 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
- computeTrueWhen false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
Default:True
C++ Type:bool
Controllable:No
Description:When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
- constant_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.
- fuel_outer_radiusThe fuel outer radius. Only required if porosity_model = partially_logged.
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The fuel outer radius. Only required if porosity_model = partially_logged.
- initiating_porosityPorosity at which sodium infiltration begins. Only required if porosity_model = partially_logged.
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Porosity at which sodium infiltration begins. Only required if porosity_model = partially_logged.
- porosityPorosity material property name. Required if porosity_model is not 'none'
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Porosity material property name. Required if porosity_model is not 'none'
- porosity_factorFactor used when calculating porosity correction. If not overriden in the input file, this parameter is set to 2.5 when the porosity_model is fractional or partially_logged. For all other models, a default of 1.72 is used.
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Factor used when calculating porosity correction. If not overriden in the input file, this parameter is set to 2.5 when the porosity_model is fractional or partially_logged. For all other models, a default of 1.72 is used.
- porosity_modelfractionalPorosity correction factor model. Choices are: none fractional power logged partially_logged
Default:fractional
C++ Type:MooseEnum
Options:none, fractional, power, logged, partially_logged
Controllable:No
Description:Porosity correction factor model. Choices are: none fractional power logged partially_logged
- sodium_logged_porositySodium logged porosity material property name. Required if porosity_model is 'logged'
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Sodium logged porosity material property name. Required if porosity_model is 'logged'
- specific_heatSpecific heat value if spheat_model = 'constant'
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Specific heat value if spheat_model = 'constant'
- specific_heat_funcSpecific heat function if spheat_model = 'function'
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Specific heat function if spheat_model = 'function'
- spheat_modelsavageSpecific heat model. Choices are: karahan savage constant function
Default:savage
C++ Type:MooseEnum
Options:karahan, savage, constant, function
Controllable:No
Description:Specific heat model. Choices are: karahan savage constant function
- thcond_modellanlThermal conductivity model. Choices are: billone galloway lanl kim odaria_corrected function constant
Default:lanl
C++ Type:MooseEnum
Options:billone, galloway, lanl, kim, odaria_corrected, function, constant
Controllable:No
Description:Thermal conductivity model. Choices are: billone galloway lanl kim odaria_corrected function constant
- thermal_conductivityThermal conductivity value if thcond_model = 'constant'
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Thermal conductivity value if thcond_model = 'constant'
- thermal_conductivity_funcThermal conductivity function if thcond_model = 'function'
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Thermal conductivity function if thcond_model = 'function'
- use_old_porosityFalseFlag to use old porosity
Default:False
C++ Type:bool
Controllable:No
Description:Flag to use old porosity
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
- 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
- specific_heat_scale_factor1The scaling factor on specific heat.
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The scaling factor on specific heat.
- thermal_conductivity_scale_factor1The scaling factor on thermal conductivity.
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The scaling factor on thermal conductivity.
Advanced: Scaling Factors Parameters
Input Files
- (assessment/metallic_fuel/FBTA/analysis/fbta_run/FBTA_base.i)
- (test/tests/upuzr_thermal/test.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_A/x441_1_5D_A.i)
- (assessment/metallic_fuel/FBTA/analysis/steady_state/common_inputs/test_base.i)
- (assessment/metallic_fuel/FFTF/IFR1/analysis/IFR1_base.i)
- (assessment/metallic_fuel/EBRII/X430/analysis/template.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_G/x441_1_5D_G.i)
- (assessment/metallic_fuel/EBRII/X447/analysis/enhancement/x447_enh_base.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_H/x441_leg_H.i)
- (test/tests/sodium_coolant_channel/dp11.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_B/x441_leg_B.i)
- (examples/non-cylindrical_fuel/3D/non-cyl_incl_creep.i)
- (examples/constituent_redistribution/1d_thermo_composition.i)
- (test/tests/standard_metallic_outputs_action/x441_mini_fuel_rod.i)
- (test/tests/ad_upuzr_thermal/test.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_G/x441_grp_G.i)
- (examples/constituent_redistribution/2d_thermo.i)
- (test/tests/metallic_fuel_coolant_wastage/cc_wastage_ht9_eff_full_pin.i)
- (test/tests/sodium_coolant_channel/dp16.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_D/x441_1_5D_D.i)
- (assessment/metallic_fuel/EBRII/X423/analysis/x423_vp_base.i)
- (examples/non-cylindrical_fuel/2D/non-cyl_base_irrad.i)
- (assessment/metallic_fuel/TREAT/M7/analysis/binary_t427.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_A/x441_leg_A.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_F/x441_1_5D_F.i)
- (examples/thor_capsule_transfer/pin_with_heat_sink.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_A/x441_grp_A.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_D/x441_leg_D.i)
- (test/tests/standard_metallic_outputs_action/x441_mini_fuel_rod_no_std_blk.i)
- (test/tests/ad_upuzr_thermal/jacobian_test.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_E/x441_grp_E.i)
- (test/tests/ad_upuzr_thermal/porosity_corrections.i)
- (examples/metal_fuel/uzr/pin.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_E/x441_1_5D_E.i)
- (test/tests/upuzr_thermal/correctodaira.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_C/x441_grp_C.i)
- (examples/metal_fuel/uzr_densification/ebr2_2d_interpores_densification.i)
- (examples/metal_fuel/x441_coarse/x441_group_A_nominal.i)
- (test/tests/ad_metallic_fuel_coolant_wastage/cc_wastage_ht9_eff_full_pin.i)
- (test/tests/zirconium_diffusion/ad_test.i)
- (test/tests/ad_upuzr_thermal/ternary.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_G/x441_leg_G.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_B/x441_1_5D_B.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/x441_base.i)
- (assessment/metallic_fuel/WPF/analysis/X425_T418/X425_base.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_E/x441_leg_E.i)
- (assessment/metallic_fuel/FBTA/analysis/steady_state/AK181/181193/IFR1_181193.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_B/x441_grp_B.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_C/x441_1_5D_C.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_F/x441_leg_F.i)
- (test/tests/ad_upuzr_thermal/porosity_corrections_old_porosity.i)
- (assessment/metallic_fuel/WPF/analysis/FM-1/FM_base.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_C/x441_leg_C.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/x441_base_legacy_swell.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_H/x441_1_5D_H.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_H/x441_grp_H.i)
- (assessment/metallic_fuel/EBRII/X423/analysis/x423_lm_base.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/x441_base_1_5D.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_D/x441_grp_D.i)
- (test/tests/zirconium_diffusion/test.i)
- (assessment/metallic_fuel/EBRII/X441/analysis/group_F/x441_grp_F.i)
- (test/tests/upuzr_thermal/infiltration.i)
- (test/tests/sodium_coolant_channel/dp16_old.i)
- (assessment/metallic_fuel/EBRII/X447/analysis/legacy/x447_base.i)
- (examples/metal_fuel/X447_coarse/DP21_test.i)
References
- T H Bauer.
In-Pile Measurement of the Thermal Conductivity of Irradiated Metallic Fuel.
Nuclear Technology, 110(3):1–15, 1995.[BibTeX]
@article{Bauer:1995gq, author = "Bauer, T H", title = "{In-Pile Measurement of the Thermal Conductivity of Irradiated Metallic Fuel}", journal = "Nuclear Technology", year = "1995", volume = "110", number = "3", pages = "1-15" } - M. C. Billone, Y. Y. Liu, E. E. Gruber, T. H. Hughes, and J. M. Kramer.
Status of Fuel Element Modeling Codes for Metallic Fuels.
In Proceedings American Nuclear Society International Conference on Reliable Fuels for Liquid Metal Reactors. Tucson, Arizona, September 7-11 1968.[BibTeX]
@inproceedings{billone1968, Author = "Billone, M. C. and Liu, Y. Y. and Gruber, E. E. and Hughes, T. H. and Kramer, J. M.", Address = "Tucson, Arizona", Booktitle = "Proceedings American Nuclear Society International Conference on Reliable Fuels for Liquid Metal Reactors", Month = "September 7-11", Title = "{Status of Fuel Element Modeling Codes for Metallic Fuels}", Year = "1968" } - J Galloway, C Unal, N Carlson, D Porter, and S Hayes.
Modeling constituent redistribution in U–Pu–Zr metallic fuel using the advanced fuel performance code BISON.
Nuclear Engineering and Design, 286:1–17, May 2015.[BibTeX]
@article{Galloway:2015fw, author = "Galloway, J and Unal, C and Carlson, N and Porter, D and Hayes, S", title = "{Modeling constituent redistribution in U{\textendash}Pu{\textendash}Zr metallic fuel using the advanced fuel performance code BISON}", journal = "Nuclear Engineering and Design", year = "2015", volume = "286", pages = "1-17", month = "May" } - B. Giordanengo, N. Benazzi, J. Vinckel, J.G. Gasser, and L. Roubi.
Thermal conductivity of liquid metals and metallic alloys.
Journal of Non-Crystalline Solids, 250-252:377–383, 1999.
URL: https://www.sciencedirect.com/science/article/pii/S0022309399002689, doi:10.1016/S0022-3093(99)00268-9.[BibTeX]
@article{GIORDANENGO1999377, author = "Giordanengo, B. and Benazzi, N. and Vinckel, J. and Gasser, J.G. and Roubi, L.", title = "Thermal conductivity of liquid metals and metallic alloys", journal = "Journal of Non-Crystalline Solids", volume = "250-252", pages = "377-383", year = "1999", issn = "0022-3093", doi = "10.1016/S0022-3093(99)00268-9", url = "https://www.sciencedirect.com/science/article/pii/S0022309399002689" } - G. L. Hofman, M. C. Billone, J. F. Koenig, J. M. Kramer, J. D. B. Lambert, L. Leibowitz, Y. Orechwa, D. R. Pedersen, D. L. Porter, H. Tsai, and A. E. Wright.
Metallic fuels handbook.
Technical Report ANL-NSE-3, Argonne National Laboratory, 2019.[BibTeX]
@TECHREPORT{mfh1988, author = "Hofman, G. L. and Billone, M. C. and Koenig, J. F. and Kramer, J. M. and Lambert, J. D. B. and Leibowitz, L. and Orechwa, Y. and Pedersen, D. R. and Porter, D. L. and Tsai, H. and Wright, A. E.", institution = "Argonne National Laboratory", number = "ANL-NSE-3", title = "Metallic Fuels Handbook", year = "2019" } - Dawn E Janney and Cynthia A Papesch.
FCRD Transmutation Fuels Handbook 2015.
Technical Report INL/EXT-15-36520, Idaho National Laboratory, September 2015.[BibTeX]
@techreport{Janney:2015uz, author = "Janney, Dawn E and Papesch, Cynthia A", title = "{FCRD Transmutation Fuels Handbook 2015}", institution = "Idaho National Laboratory", year = "2015", number = "INL/EXT-15-36520", month = "September" } - Aydin Karahan.
Modeling of thermo-mechanical and irradiation behavior of metallic and oxide fuels for sodium fast reactors.
PhD thesis, Massachusetts Institute of Technology, Jun 2009.
URL: https://tinyurl.com/y72vqvbn.[BibTeX]
@phdthesis{karahan2009, author = "Karahan, Aydin", title = "Modeling of thermo-mechanical and irradiation behavior of metallic and oxide fuels for sodium fast reactors", school = "Massachusetts Institute of Technology", year = "2009", month = "Jun", url = "https://tinyurl.com/y72vqvbn" } - Yeon Soo Kim, Tae Won Cho, and Dong-Seong Sohn.
Thermal conductivities of actinides (U, Pu, Np, Cm, Am) and uranium-alloys (U-Zr, U-Pu-Zr and U-Pu-TRU-Zr).
Journal of Nuclear Materials, 445(1-3):272–280, February 2014.[BibTeX]
@article{Kim:2014jd, author = "Kim, Yeon Soo and Cho, Tae Won and Sohn, Dong-Seong", title = "{Thermal conductivities of actinides (U, Pu, Np, Cm, Am) and uranium-alloys (U-Zr, U-Pu-Zr and U-Pu-TRU-Zr)}", journal = "Journal of Nuclear Materials", year = "2014", volume = "445", number = "1-3", pages = "272-280", month = "February" } - Yeon Soo Kim and G. L. Hofman.
AAA Fuels Handbook.
Technical Report, Argonne National Laboratory, 2003.[BibTeX]
@TECHREPORT{aaa_handbook, Author = "Kim, Yeon Soo and Hofman, G. L.", title = "{AAA Fuels Handbook}", publisher = "{A}rgonne {N}ational {L}aboratory", institution = "Argonne National Laboratory", year = "2003" } - C Matthews and C Unal.
Unpublished work.
2015.[BibTeX]
@Unpublished{Matthews_temp, author = "Matthews, C and Unal, C", title = "{Unpublished work}", note = "", year = "2015" } - Naoya Odaira and Yuji Arita.
An estimation of the thermal properties of Pu-rich metallic fuel.
Advances in Materials Science and Engineering, 2019:7263721:1–7, 2019.
doi:10.1155/2019/7263721.[BibTeX]
@article{ODAIRA20197, author = "Odaira, Naoya and Arita, Yuji", title = "An Estimation of the Thermal Properties of {P}u-Rich Metallic Fuel", journal = "Advances in Materials Science and Engineering", volume = "2019", pages = "7263721:1-7", year = "2019", doi = "10.1155/2019/7263721" } - H. Savage.
The heat content and specific heat of some metallic fast-reacdtor fuels containing plutonium.
Journal of Nuclear Materials, 25:583–594, 2006.
doi:10.1016/0022-3115(68)90168-2.[BibTeX]
@article{savage1968, author = "Savage, H.", title = "The heat content and specific heat of some metallic fast-reacdtor fuels containing plutonium", journal = "Journal of Nuclear Materials", volume = "25", issue = "3", doi = "10.1016/0022-3115(68)90168-2", pages = "583-594", year = "2006" } - Yoichi Takahashi, Michio Yamawaki, and Kazutaka Yamamoto.
Thermophysical properties of uranium-zirconium alloys.
Journal of Nuclear Materials, 154(1):141–144, June 1988.[BibTeX]
@article{Takahashi:1988fn, author = "Takahashi, Yoichi and Yamawaki, Michio and Yamamoto, Kazutaka", title = "{Thermophysical properties of uranium-zirconium alloys}", journal = "Journal of Nuclear Materials", year = "1988", volume = "154", number = "1", pages = "141-144", month = "June" } - Y S Touloukian, R W Powell, C Y Ho, and P G Klemens.
\textbf Thermophysical Properties of Matter - The TPRC Data Series. Volume 2. Thermal Conductivity - Nonmetallic Solids.
Defense Technical Information Center, New York, NY, January 1971.[BibTeX]
@book{Touloukian:1971wl, author = "Touloukian, Y S and Powell, R W and Ho, C Y and Klemens, P G", title = "{\textbf{ }Thermophysical Properties of Matter - The TPRC Data Series. Volume 2. Thermal Conductivity - Nonmetallic Solids}", year = "1971", address = "New York, NY", publisher = "Defense Technical Information Center", month = "January" }
(test/tests/upuzr_thermal/test.i)
# Tests individual models in ThermalUPuZr
[Problem]
solve = false
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 1
[]
[]
[AuxVariables]
[temp]
initial_condition = 800.0
[]
[X_Zr]
[]
[]
[AuxKernels]
[temp_aux]
type = FunctionAux
variable = temp
function = '50 * t + 800'
[]
[zr_aux]
type = FunctionAux
variable = X_Zr
function = ramp
[]
[]
[Functions]
[ramp]
type = ParsedFunction
expression = '0.1 * t + 0.1'
[]
[]
[Materials]
[thermal]
type = UPuZrThermal
block = 0
temperature = temp
X_Pu = 0.16
X_Zr = X_Zr
porosity = porosity
outputs = all
spheat_model = karahan
[]
[porosity]
type = GenericFunctionMaterial
prop_names = porosity
prop_values = ramp
outputs = all
[]
[]
[Executioner]
type = Transient
end_time = 3
[]
[Postprocessors]
[temp]
type = ElementAverageValue
variable = temp
[]
[Zr]
type = ElementAverageValue
variable = X_Zr
[]
[porosity]
type = ElementAverageValue
variable = porosity
[]
[thcond]
type = ElementAverageValue
variable = thermal_conductivity
[]
[thcond_dT]
type = ElementAverageValue
variable = thermal_conductivity_dT
[]
[thcond_dZr]
type = ElementAverageValue
variable = thermal_conductivity_dZr
[]
[spheat]
type = ElementAverageValue
variable = specific_heat
[]
[spheat_dT]
type = ElementAverageValue
variable = specific_heat_dT
[]
[]
[Outputs]
csv = true
[]
(assessment/metallic_fuel/FBTA/analysis/fbta_run/FBTA_base.i)
file_base_str = 'fbta_run/FBTA_output/${fbta_exp_id}/${fbta_exp_id}_1D_${pen_model_enum}'
fipd_submodule_dir = '../../../../../../../fipd-bison-integration-data/'
[Mesh]
[fmg]
type = FileMeshGenerator
file = ${raw '../../../gold/fbta_initialization/load_params_inputs/ ${fbta_exp_id} _loading_params_out.e'}
use_for_exodus_restart = 1
[]
[gen]
type = FIPDRodletMeshGenerator
fipd_geom_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / ${pin_id} _design.csv'}
gap_bottom_length = 0.31e-3 # arbitrary
cladding_bottom_plug_length = 2.24e-3 # arbitrary
cladding_top_plug_length = 2.24e-3 # arbitrary
cladding_sidewall_radial_elements = 10
cladding_sidewall_axial_element_numbers = '2 150 150'
cladding_top_plug_radial_elements = 10
cladding_top_plug_axial_elements = 5
cladding_bottom_plug_radial_elements = 10
cladding_bottom_plug_axial_elements = 5
fuel_radial_elements = 6
fuel_axial_element_intervals = '0 1'
fuel_axial_element_numbers = '150'
use_default_cladding_sidewall_axial_element_intervals = true
elem_type = QUAD4
[]
final_generator = fmg
coord_type = RZ
[]
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
X_Pu = ${fuel_pu}
X_Zr = ${fuel_zr}
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[temp]
initial_from_file_var = temp
initial_from_file_timestep = LATEST
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie_f]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = 3
density_name = density
[]
[heat_ie_c]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = 1
density_name = density
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = cladding_left
secondary = fuel_right
quadrature = true
gap_conductivity = 61.0
min_gap = 0.5e-03
[]
[]
[BCs]
[ext_temp]
type = ADFunctionDirichletBC
boundary = 'cladding_right'
variable = temp
function = outer_temp
[]
[]
[Functions]
[outer_temp]
type = ConstantFunction
value = ${test_temp}
[]
[clad_thick]
type = MeshPropertyFunction
mesh_generator = 'gen'
mesh_property_name = 'cladding_thickness'
[]
[id_pen_vpp_func]
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = id_pen_trans
argument_column = y
wastage_type = ID
value_column = pen_thick_aux
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[fuel_melt_func]
type = MetallicFuelMeltingFunction
vectorpostprocessor_name = fuel_melting
argument_column = y
value_column = melt_fuel_aux
use_metadata = true
mesh_generator = 'gen'
transition_width = 2e-4
[]
[]
[AuxVariables]
[disp_x]
initial_from_file_var = disp_x
initial_from_file_timestep = LATEST
[]
# y and z seem needed for ParaView diplaced mesh visualization
[disp_y]
[]
[disp_z]
[]
[porosity]
family = MONOMIAL
order = CONSTANT
initial_from_file_var = porosity
initial_from_file_timestep = LATEST
[]
[burnup_aux]
family = MONOMIAL
order = CONSTANT
initial_from_file_var = burnup
initial_from_file_timestep = LATEST
[]
[pen_thick_aux]
family = MONOMIAL
order = CONSTANT
[]
[id_wast_ss_aux]
family = MONOMIAL
order = CONSTANT
initial_from_file_var = id_wastage
initial_from_file_timestep = LATEST
[]
[od_wast_ss_aux]
family = MONOMIAL
order = CONSTANT
initial_from_file_var = od_wastage
initial_from_file_timestep = LATEST
[]
[total_id_loss]
family = MONOMIAL
order = CONSTANT
[]
[melt_fuel_aux]
family = MONOMIAL
order = CONSTANT
[]
[func_val1]
block = 1
[]
[func_val3]
block = 3
[]
[]
[AuxKernels]
[assign_pen_thick_aux]
type = ADMaterialRealAux
variable = pen_thick_aux
property = liquid_penetration
[]
[assign_total_id_loss]
type = ParsedAux
variable = total_id_loss
coupled_variables = 'id_wast_ss_aux pen_thick_aux'
expression = 'id_wast_ss_aux + pen_thick_aux'
[]
[assign_melt_fuel_aux]
type = ADMaterialRealAux
variable = melt_fuel_aux
property = fuel_melting_thickness
[]
[func_val1]
type = FunctionAux
function = id_pen_vpp_func
variable = func_val1
block = 1
[]
[func_val3]
type = FunctionAux
function = fuel_melt_func
variable = func_val3
block = 3
[]
[]
[Materials]
[burnup]
type = ADParsedMaterial
property_name = burnup
coupled_variables = burnup_aux
expression = burnup_aux
[]
[pen_thick_rate]
type = ADMetallicFuelLiquidCladdingPenetration
liquid_penetration_model = ${pen_model_enum}
fuel_pu = ${fuel_pu_enum}
temperature = temp
mesh_generator = gen
burnup = burnup
calculate_fuel_melting_thickness = true
fuel_melting_model = INTRINSIC
[]
[metal_fuel_thermal]
type = ADUPuZrThermal
block = 3
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = ADStrainAdjustedDensity
displacements = 'disp_x disp_y'
block = 3
strain_free_density = ${fuel_density}
[]
[clad_thermal]
type = ADHT9Thermal
block = 1
temperature = temp
[]
[clad_density]
type = ADStrainAdjustedDensity
block = 1
strain_free_density = 7874.0
[]
[porosity]
type = ADParsedMaterial
coupled_variables = 'porosity'
expression = 'porosity'
property_name = porosity
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
solve_type = 'PJFNK'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 101'
line_search = 'none'
end_time = ${run_time}
dt = ${fparse max(1.0,floor(run_time/1000))}
l_max_its = 100
l_tol = 1e-3
nl_max_its = 50
nl_rel_tol = 1e-5
nl_abs_tol = 1e-7
[]
[UserObjects]
[clad_comsumption]
type = Terminator
expression = 'clad_total_id_loss >= clad_thick'
execute_on = TIMESTEP_END
[]
[]
[Postprocessors]
[clad_thick]
type = FunctionValuePostprocessor
function = clad_thick
outputs = none
[]
[clad_pen_thick]
type = SideAverageValue
variable = pen_thick_aux
boundary = cladding_left
[]
[fuel_melt_thick]
type = SideAverageValue
variable = melt_fuel_aux
boundary = fuel_right
[]
[clad_total_id_loss]
type = SideAverageValue
variable = total_id_loss
boundary = cladding_left
[]
[bu_min]
type = ADElementExtremeMaterialProperty
mat_prop = burnup
value_type = min
enable = false
[]
[bu_max]
type = ADElementExtremeMaterialProperty
mat_prop = burnup
value_type = max
enable = false
[]
[]
[VectorPostprocessors]
[id_pen_trans]
type = SideValueSampler
variable = pen_thick_aux
boundary = cladding_left
sort_by = y
outputs = none
[]
[id_wastage_ss]
type = SideValueSampler
variable = id_wast_ss_aux
boundary = cladding_left
sort_by = y
outputs = none
[]
[od_wastage_ss]
type = SideValueSampler
variable = od_wast_ss_aux
boundary = cladding_right
sort_by = y
outputs = none
[]
[id_total]
type = SideValueSampler
variable = total_id_loss
boundary = cladding_left
sort_by = y
outputs = none
[]
[fuel_melting]
type = SideValueSampler
variable = melt_fuel_aux
boundary = fuel_right
sort_by = y
outputs = none
[]
[]
[Outputs]
console = true
[csv]
type = CSV
time_step_interval = 100
file_base = ${file_base_str}
[]
[exodus]
type = Exodus
time_step_interval = 100
file_base = ${file_base_str}
enable = false
[]
[cp]
type = Checkpoint
wall_time_interval = 1e10
[]
[]
!include FBTA_RUNNING_PARAMS_FILE
(test/tests/upuzr_thermal/test.i)
# Tests individual models in ThermalUPuZr
[Problem]
solve = false
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 1
[]
[]
[AuxVariables]
[temp]
initial_condition = 800.0
[]
[X_Zr]
[]
[]
[AuxKernels]
[temp_aux]
type = FunctionAux
variable = temp
function = '50 * t + 800'
[]
[zr_aux]
type = FunctionAux
variable = X_Zr
function = ramp
[]
[]
[Functions]
[ramp]
type = ParsedFunction
expression = '0.1 * t + 0.1'
[]
[]
[Materials]
[thermal]
type = UPuZrThermal
block = 0
temperature = temp
X_Pu = 0.16
X_Zr = X_Zr
porosity = porosity
outputs = all
spheat_model = karahan
[]
[porosity]
type = GenericFunctionMaterial
prop_names = porosity
prop_values = ramp
outputs = all
[]
[]
[Executioner]
type = Transient
end_time = 3
[]
[Postprocessors]
[temp]
type = ElementAverageValue
variable = temp
[]
[Zr]
type = ElementAverageValue
variable = X_Zr
[]
[porosity]
type = ElementAverageValue
variable = porosity
[]
[thcond]
type = ElementAverageValue
variable = thermal_conductivity
[]
[thcond_dT]
type = ElementAverageValue
variable = thermal_conductivity_dT
[]
[thcond_dZr]
type = ElementAverageValue
variable = thermal_conductivity_dZr
[]
[spheat]
type = ElementAverageValue
variable = specific_heat
[]
[spheat_dT]
type = ElementAverageValue
variable = specific_heat_dT
[]
[]
[Outputs]
csv = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_A/x441_1_5D_A.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/FBTA/analysis/steady_state/common_inputs/test_base.i)
# IFR Steady State Irradiation Base Input File
# Inspired by X441 Assessment Case
fipd_submodule_dir = '../../../../../../../fipd-bison-integration-data/'
gap_bottom_length = 0.31e-3
top_bot_cladding_height = 2.24e-3
# calculations
cladding_ir = '${fparse fuel_radius + cladding_gap_width}'
gas_plenum_height = '${fparse plenum_volume / pi / cladding_ir^2}'
fuel_y_start = '${fparse gap_bottom_length + top_bot_cladding_height}'
alpha_start = 877
alpha_end = 936
bubble_concentration = 1e15
cladding_block = 'cladding'
clad_n_rad = 10
[GlobalParams]
order = FIRST
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
alpha_transition_end = ${alpha_end}
alpha_transition_start = ${alpha_start}
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
# Pin design parameters from FIPD database
[gen]
type = FIPDRodletMeshGenerator
fipd_geom_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / ${pin_id} _design.csv'}
gap_bottom_length = 0.31e-3 # arbitrary
cladding_bottom_plug_length = 2.24e-3 # arbitrary
cladding_top_plug_length = 2.24e-3 # arbitrary
cladding_sidewall_radial_elements = ${clad_n_rad}
cladding_sidewall_axial_element_numbers = '2 150 150'
# use_tri_for_cladding_sidewall = '0 1 0'
cladding_top_plug_radial_elements = 10
cladding_top_plug_axial_elements = 5
cladding_bottom_plug_axial_elements = 5
fuel_radial_elements = 6
fuel_axial_element_intervals = '0 1'
fuel_axial_element_numbers = '250'
use_default_cladding_sidewall_axial_element_intervals = true
elem_type = QUAD4
make_stand = true
make_cap = true
cap_axial_elements = 15
stand_axial_elements = 15
[]
[sodium_height]
type = SideSetsFromBoundingBoxGenerator
input = gen
bottom_left = '0 0 0'
top_right = '${fparse cladding_ir + cladding_thickness} ${fparse fuel_y_start + fuel_height} 0'
included_boundaries = 'cladding_inside_right'
boundary_new = '1005'
[]
[gas_height]
type = SideSetsFromBoundingBoxGenerator
input = sodium_height
bottom_left = '0 ${fparse fuel_y_start + fuel_height} 0'
top_right = '${fparse cladding_ir + cladding_thickness} ${fparse fuel_y_start + fuel_height + gas_plenum_height + top_bot_cladding_height} 0'
included_boundaries = 'cladding_inside_right'
boundary_new = '1006'
[]
[sodium_plenum_rename]
type = RenameBoundaryGenerator
input = gas_height
old_boundary = '1005 1006'
new_boundary = 'sodium_height gas_height'
[]
patch_size = 40
patch_update_strategy = always
partitioner = centroid
centroid_partitioner_direction = y
coord_type = RZ
[]
[Variables]
[temp]
initial_condition = 298
block = 'fuel ${cladding_block} cap stand'
[]
[disp_x]
block = 'fuel ${cladding_block} cap stand'
[]
[disp_y]
block = 'fuel ${cladding_block} cap stand'
[]
[]
[Functions]
[fflux_axial_peaking_factors] # Fast flux peaking factor from FIPD database; used for fuel related simulations
type = FIPDAxialProfileFunction
data_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / peakingfactor_flux_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
extrapolate_to_zero = true
[]
[fflux_axial_peaking_factors_elongate] # Fast flux peaking factor from FIPD database; used for cladding related simulations
type = FIPDAxialProfileFunction
data_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / peakingfactor_flux_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
extrapolate_to_zero = true
fuel_elongation_pp = max_fuel_elongation # pp used to track fuel elongation
[]
[flux_history] # Time-dependent pin average fast flux from FIPD database
type = PiecewiseLinear
data_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / flux_history_ ${pin_id} .csv'}
[]
[clad_od_temp] # Time-dependent cladding OD temperature from FIPD database
type = FIPDAxialProfileFunction
data_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / clad_od_temp_history_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
[]
[ab_sodium_vol]
type = MeshPropertyFunction
mesh_generator = gen
mesh_property_name = sodium_volume
scale_factor = -1.0
[]
[sodium_volume]
# Need to account for the factor that hot pressing is also occupying the open pores
type = ParsedFunction
symbol_names = 'porosity_sodium_logging_avg volume_fuel raw_sodium_vol temp_sodium_avg'
symbol_values = 'porosity_sodium_logging_avg volume_fuel ab_sodium_vol temp_sodium_avg'
# Note the the symbol before volume_fuel should be negative as volume_fuel itself is negative
expression = 'raw_sodium_vol * 954 / (1102 - 0.23 * temp_sodium_avg) - volume_fuel * porosity_sodium_logging_avg'
[]
[power_history] # Time-dependent pin average power from FIPD database
type = PiecewiseLinear
data_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / power_history_ ${pin_id} .csv'}
[]
[axial_peaking_factors]
type = FIPDAxialProfileFunction
data_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / peakingfactor_power_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
[]
[axial_peaking_factors_extended]
type = FIPDAxialProfileFunction
data_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / peakingfactor_power_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
fuel_elongation_pp = max_fuel_elongation # pp used to track fuel elongation
[]
[anisotropic_swelling_factor]
type = ParsedFunction
symbol_names = 'disp_x_fuel_radial_surface_avg disp_y_fuel_top_surface_avg fuel_height fuel_radius'
symbol_values = 'disp_x_fuel_radial_surface_avg disp_y_fuel_top_surface_avg ${fuel_height} ${fuel_radius}'
expression = '(disp_x_fuel_radial_surface_avg / ${fuel_radius}) / (disp_y_fuel_top_surface_avg / ${fuel_height})'
[]
[gap_thermal_conductivity]
type = ParsedFunction
expression = '124.67 - 0.11381 * t + 5.5226e-5 * t^2 - 1.1842e-8 * t^3'
[]
[id_vpp_func] # vpp_function used to track FCCI-related cladding degradation.
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = id_wastage
argument_column = y
wastage_type = ID
value_column = wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[od_vpp_func] # vpp_function used to track CCCI-related cladding degradation.
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = od_wastage
argument_column = y
wastage_type = OD
value_column = cc_wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[fuel_melt_func]
type = MetallicFuelMeltingFunction
vectorpostprocessor_name = fuel_melting
argument_column = y
value_column = fuel_melting_thickness
use_metadata = true
mesh_generator = 'gen'
transition_width = 2e-4
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = fuel
strain = FINITE
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
eigenstrain_names = 'fuel_thermal_strain solid_swelling_eigenstrain'
use_automatic_differentiation = true
volumetric_locking_correction = true
[]
[]
[Kernels]
[gravity]
type = ADGravity
block = 'fuel ${cladding_block}'
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = ADHeatConduction
block = 'fuel ${cladding_block} cap stand'
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
block = 'fuel ${cladding_block} cap stand'
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = ADFissionRateHeatSource
variable = temp
block = 'fuel'
fission_rate = fission_rate
extra_vector_tags = 'ref'
energy_deposited_in_fuel = 0.95
[]
[disp_x_dt]
type = ADTimeDerivative
variable = disp_x
block = 'cap stand'
extra_vector_tags = 'ref'
[]
[disp_y_dt]
type = ADTimeDerivative
variable = disp_y
block = 'cap stand'
extra_vector_tags = 'ref'
[]
[disp_x_diff]
type = ADMatAnisoDiffusion
variable = disp_x
block = 'cap stand'
diffusivity = d_x
extra_vector_tags = 'ref'
[]
[disp_y_diff]
type = ADMatDiffusion
variable = disp_y
block = 'cap stand'
diffusivity = 1e8
extra_vector_tags = 'ref'
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_bottom = cladding_outside_bottom
clad_inner_wall = cladding_inside_right
clad_outer_wall = cladding_outside_right
clad_top = cladding_outside_top
pellet_exteriors = fuel_outside_all
[]
[fuel_thm_exp]
type = LayeredAverage
variable = fuel_thermal_strain_xx
direction = y
num_layers = 1000
block = fuel
[]
[clad_thm_exp]
type = LayeredAverage
variable = clad_thermal_eigenstrain_xx
direction = y
num_layers = 1000
block = ${cladding_block}
[]
[]
[Contact]
[fuel_cladding_mechanical]
primary = cladding_inside_right
secondary = fuel_outer_radial_surface
model = coulomb
friction_coefficient = 0.1
formulation = mortar
c_normal = '${fparse 1e17 * magic_factor}'
c_tangential = '${fparse 1e19 * magic_factor}'
correct_edge_dropping = true
[]
[]
[MortarGapHeatTransfer]
[inside2outside]
temperature = temp
boundary = 'cladding_inside_right'
gap_conductivity_function = gap_thermal_conductivity
gap_conductivity_function_variable = temp
primary_boundary = cladding_inside_right
secondary_boundary = fuel_contact_surfaces
gap_flux_options = 'CONDUCTION'
ghost_point_neighbors = true
[]
[]
[BCs]
[no_x_all]
type = ADDirichletBC
variable = disp_x
boundary = 'centerline cap_top'
value = 0.0
preset = false
[]
[no_y_clad]
type = ADDirichletBC
variable = disp_y
boundary = 'cladding_inside_bottom'
value = 0.0
preset = false
[]
[Pressure]
[coolantPressure]
boundary = 'cladding_outside_right'
factor = 0.151e6
use_automatic_differentiation = true
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 'inside_surfaces'
initial_pressure = 84116 # in Pa, 12.2 psi
startup_time = 0
R = 8.3143
temperature = temp_gas_avg
volume = volume_plenum
output = plenum_pressure
material_input = fg_released
use_automatic_differentiation = true
[]
[]
[surf] # Setting temperature BC base on FIPD data
type = ADFunctionDirichletBC
variable = temp
boundary = 'cladding_outside_bottom cladding_outside_right cladding_outside_top'
function = clad_od_temp
[]
[]
[AuxVariables]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[relx]
[]
[clad_thm_exp]
order = CONSTANT
family = MONOMIAL
block = '${cladding_block}'
[]
[clad_thermal_eigenstrain_xx]
order = CONSTANT
family = MONOMIAL
block = '${cladding_block}'
[]
[fuel_thermal_strain_xx]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[fuel_thermal_strain_yy]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[fuel_thm_exp]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[func_val1]
[]
[func_val2]
[]
[func_val3]
[]
# OPTD Dummy during this stage
[pen_thick_aux]
family = MONOMIAL
order = CONSTANT
block = 'fuel ${cladding_block}'
[]
[total_id_reduction]
family = MONOMIAL
order = CONSTANT
block = 'fuel ${cladding_block}'
[]
[fast_neutron_fluence_aux]
order = CONSTANT
family = MONOMIAL
block = '${cladding_block}'
[]
[]
[AuxKernels]
[func_val1]
type = FunctionAux
function = id_vpp_func
variable = func_val1
block = ${cladding_block}
[]
[func_val2]
type = FunctionAux
function = od_vpp_func
variable = func_val2
block = ${cladding_block}
[]
[func_val3]
type = FunctionAux
function = fuel_melt_func
variable = func_val3
block = fuel
[]
[cdf_amount]
block = '${cladding_block}'
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[relx_aux]
type = ParsedAux
variable = relx
block = fuel
use_xyzt = true
expression = 'x / ${fuel_radius}'
[]
[clad_thm_exp]
type = SpatialUserObjectAux
variable = clad_thm_exp
execute_on = 'initial timestep_end'
user_object = clad_thm_exp
block = '${cladding_block}'
[]
[clad_thermal_eigenstrain_xx]
type = ADRankTwoAux
rank_two_tensor = cladding_thermal_eigenstrain
variable = clad_thermal_eigenstrain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = '${cladding_block}'
[]
[fuel_thermal_strain_xx]
type = ADRankTwoAux
rank_two_tensor = fuel_thermal_strain
variable = fuel_thermal_strain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = fuel
[]
[fuel_thermal_strain_yy]
type = ADRankTwoAux
rank_two_tensor = fuel_thermal_strain
variable = fuel_thermal_strain_yy
index_j = 1
index_i = 1
execute_on = 'initial timestep_end'
block = fuel
[]
[fuel_thm_exp]
type = SpatialUserObjectAux
variable = fuel_thm_exp
execute_on = 'initial timestep_end'
user_object = fuel_thm_exp
block = fuel
[]
# OPTD
[assign_pen_thick_aux]
type = ADMaterialRealAux
variable = pen_thick_aux
property = liquid_penetration
block = 'fuel ${cladding_block}'
[]
[assign_total_id_reduction]
type = ParsedAux
variable = total_id_reduction
coupled_variables = 'pen_thick_aux wastage_thickness'
expression = 'pen_thick_aux + wastage_thickness'
block = 'fuel ${cladding_block}'
[]
[]
[Materials]
[fuel_pen]
type = ADMetallicFuelLiquidCladdingPenetration
temperature = temp
mesh_generator = gen
fuel_elongation_pp = max_fuel_elongation
liquid_penetration_model = 'ANL_CONSERVATIVE'
fuel_pu = Pu_0
burnup = burnup
outputs = all
calculate_fuel_melting_thickness = true
block = 'fuel ${cladding_block}'
[]
[d_x]
type = ADConstantAnisotropicMobility
tensor = '1e3 0 0
0 1e6 0
0 0 0'
M_name = d_x
[]
[cap_thcond]
type = ADGenericConstantMaterial
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '65 1200 830'
block = 'cap stand'
outputs = all
[]
[interconnected_porosity]
type = ADParsedMaterial
block = 'fuel'
property_name = interconnected_porosity
material_property_names = 'porosity interconnectivity'
expression = 'porosity * interconnectivity'
outputs = all
[]
[fission_rate]
type = ADUPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${fuel_radius}
# initial_X_Zr=${initial_X_Zr}
X_Zr = ${initial_X_Zr}
X_Pu_function = ${X_Pu}
block = 'fuel'
outputs = all
[]
[fission_rate_elongate]
type = ADUPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors_extended
pellet_radius = ${fuel_radius}
# initial_X_Zr = ${initial_X_Zr}
X_Zr = ${initial_X_Zr}
X_Pu_function = ${X_Pu}
block = '${cladding_block}'
outputs = all
fission_rate_name = fission_rate
[]
[burnup]
type = ADUPuZrBurnup
initial_X_Zr = ${initial_X_Zr}
initial_X_Pu = ${X_Pu}
density = ${fuel_density}
block = 'fuel'
outputs = all
[]
[burnup_elongate]
type = ADUPuZrBurnup
initial_X_Pu = ${X_Pu}
initial_X_Zr = ${initial_X_Zr}
outputs = all
block = '${cladding_block}'
density = ${fuel_density}
burnup_name = burnup
[]
[fuel_elastic_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'hotpress fuel_upuzrcreep gas_swelling'
block = 'fuel'
outputs = all
[]
[hotpress]
type = ADUPuZrHotPressingStressUpdate
block = 'fuel'
outputs = all
surface_energy = 1.6
plenum_pressure = plenum_pressure
porosity_name = porosity
max_inelastic_increment = 1e-1
interconnectivity = interconnectivity
bubble_concentration = ${bubble_concentration}
temperature = temp
creep_model = MFH
fission_rate = fission_rate
atomic_volume = 2.15e-29
porosity_start = 0.01
porosity_end = 0
grain_boundary_D0 = 4e-29
grain_boundary_Q = 0
absolute_tolerance = 1e-9
[]
[porosity]
type = ADPorosityFromStrain
block = 'fuel'
initial_porosity = 1e-10
inelastic_strain = 'combined_inelastic_strain'
outputs = all
[]
[fuel_elasticity_tensor]
type = ADUPuZrElasticityTensor
X_Zr = ${initial_X_Zr}
X_Pu = ${X_Pu}
youngs_model = LANL
block = 'fuel'
temperature = temp
use_old_porosity = true
outputs = all
output_properties = 'youngs_modulus poissons_ratio'
[]
[fuel_upuzrcreep]
type = ADUPuZrCreepUpdate
block = 'fuel'
temperature = temp
porosity = porosity
use_old_porosity = true
max_inelastic_increment = 1e-3
outputs = all
automatic_differentiation_return_mapping = false
[]
[fuel_thermal_expansion]
type = ADUPuZrThermalExpansionEigenstrain
block = 'fuel'
temperature = temp
stress_free_temperature = 298.0
eigenstrain_name = fuel_thermal_strain
outputs = all
thermal_expansion_model = LANL
X_Zr = ${initial_X_Zr}
X_Pu = ${X_Pu}
[]
[gas_swelling]
type = ADSimpleFissionGasViscoplasticityStressUpdate
temperature = temp
outputs = all
block = 'fuel'
bubble_concentration = ${bubble_concentration}
initial_bubble_concentration = ${bubble_concentration}
compute_interconnectivity = true
fission_gas_yield = 0.3017 #0.25
fission_rate = fission_rate
initial_atoms_per_bubble = 1e-05
initial_bubble_radius = 1e-15
initial_fgm_dissolved = 0
interconnection_cutoff = 0.99
interconnection_initiating_porosity = 0.23
interconnection_terminating_porosity = 0.25
max_inelastic_increment = 1e-2
retained_gas_fraction = 0.25
interconnection_dependent_retained_gas_fraction = 0.5
surface_energy = 1.6
anisotropic_factor = 0.26
initial_porosity = 1e-10
fuel_melting_function = fuel_melt_func
[]
[solid_swelling]
type = ADBurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = 'fuel'
swelling_name = 'solid_swelling'
outputs = all
anisotropic_factor = 0.26
[]
[metal_fuel_thermal]
type = ADUPuZrThermal
block = 'fuel'
X_Zr = ${initial_X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
porosity = porosity
temperature = temp
outputs = all
porosity_model = logged
sodium_logged_porosity = sodium_logged_porosity
[]
[sodium_logging]
type = ADUPuZrSodiumLogging
block = 'fuel'
porosity = porosity
interconnectivity = interconnectivity
sodium_infiltration_fraction = 0.28
outputs = all
[]
[fuel_density]
type = ADStrainAdjustedDensity
block = 'fuel'
strain_free_density = ${fuel_density}
outputs = all
[]
[fast_neutron_flux]
type = ADFastNeutronFlux
calculate_fluence = true
axial_power_profile = fflux_axial_peaking_factors
rod_ave_lin_pow = flux_history
block = fuel
factor = 1.0
outputs = all
[]
[fast_neutron_flux_elongate]
type = ADFastNeutronFlux
calculate_fluence = true
axial_power_profile = fflux_axial_peaking_factors_elongate
rod_ave_lin_pow = flux_history
block = '${cladding_block}'
factor = 1.0
outputs = all
[]
[]
[Dampers]
[disp_x]
type = MaxIncrement
variable = disp_x
max_increment = 1e-4
[]
[disp_y]
type = MaxIncrement
variable = disp_y
max_increment = 1e-3
[]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[vcp]
type = VCP
full = true
primary_variable = 'disp_x disp_y temp'
preconditioner = 'LU'
adaptive_condensation = true
lm_variable = 'fuel_cladding_mechanical_normal_lm fuel_cladding_mechanical_tangential_lm inside2outside_thermal_lm'
is_lm_coupling_diagonal = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount -snes_force_iteration'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-15 1'
line_search = 'none'
snesmf_reuse_base = false
verbose = true
l_max_its = 60
nl_max_its = 20
nl_rel_tol = 1e-7
nl_abs_tol = 1e-8 #1e9
end_time = ${run_time}
dtmin = 1
dtmax = ${max_time_step}
automatic_scaling = true
compute_scaling_once = false
off_diagonals_in_auto_scaling = true
ignore_variables_for_autoscaling = 'fuel_cladding_mechanical_normal_lm fuel_cladding_mechanical_tangential_lm inside2outside_thermal_lm'
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = time_step_limit
force_step_every_function_point = true
timestep_limiting_function = power_history
dt = 1e2
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
[]
# elemental temperatures
[temp_fuel_avg]
type = ElementAverageValue
variable = temp
block = 'fuel'
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = ElementExtremeValue
variable = temp
block = 'fuel'
[]
[temp_fuel_min]
type = ElementExtremeValue
variable = temp
block = 'fuel'
value_type = min
[]
[temp_cladding_avg]
type = ElementAverageValue
variable = temp
block = '${cladding_block}'
[]
[temp_cladding_max]
type = ElementExtremeValue
variable = temp
block = '${cladding_block}'
[]
[temp_cladding_min]
type = ElementExtremeValue
variable = temp
block = '${cladding_block}'
value_type = min
[]
# boundary temperatures
[temp_gas_avg]
type = SideAverageValue
boundary = 'gas_height cladding_inside_top'
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_sodium_avg]
type = ElementAverageValue
block = 'cap'
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_inside_surfaces_avg]
type = SideAverageValue
boundary = 'inside_surfaces'
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_fuel_centerline_avg]
type = AxisymmetricCenterlineAverageValue
boundary = 'centerline'
variable = temp
[]
[temp_fuel_centerline_max]
type = NodalExtremeValue
boundary = 'centerline'
variable = temp
[]
[temp_fuel_centerline_min]
type = NodalExtremeValue
boundary = 'centerline'
variable = temp
value_type = min
[]
[temp_fuel_surface_avg]
type = SideAverageValue
boundary = 'fuel_outer_radial_surface'
variable = temp
[]
[temp_fuel_surface_max]
type = NodalExtremeValue
boundary = 'fuel_outer_radial_surface'
variable = temp
[]
[temp_fuel_surface_min]
type = NodalExtremeValue
boundary = 'fuel_outer_radial_surface'
variable = temp
value_type = min
[]
[temp_cladding_inside_right_avg]
type = SideAverageValue
boundary = 'cladding_inside_right'
variable = temp
[]
[temp_cladding_inside_right_max]
type = NodalExtremeValue
boundary = 'cladding_inside_right'
variable = temp
[]
[temp_cladding_outside_right_avg]
type = SideAverageValue
boundary = 'cladding_outside_right'
variable = temp
[]
# stresses
[stress_vonmises_fuel_avg]
type = ElementAverageValue
variable = vonmises_stress
block = 'fuel'
[]
[stress_vonmises_fuel_max]
type = ElementExtremeValue
variable = vonmises_stress
block = 'fuel'
[]
[stress_vonmises_fuel_min]
type = ElementExtremeValue
variable = vonmises_stress
value_type = min
block = 'fuel'
[]
[stress_hydro_fuel_avg]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'fuel'
[]
[stress_hydro_fuel_max]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'fuel'
[]
[stress_hydro_fuel_min]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = 'fuel'
[]
[stress_vonmises_cladding_avg]
type = ElementAverageValue
variable = vonmises_stress
block = '${cladding_block}'
[]
[stress_vonmises_cladding_max]
type = ElementExtremeValue
variable = vonmises_stress
block = '${cladding_block}'
[]
[stress_vonmises_cladding_min]
type = ElementExtremeValue
variable = vonmises_stress
value_type = min
block = '${cladding_block}'
[]
[stress_hydro_cladding_avg]
type = ElementAverageValue
variable = hydrostatic_stress
block = '${cladding_block}'
[]
[stress_hydro_cladding_max]
type = ElementExtremeValue
variable = hydrostatic_stress
block = '${cladding_block}'
[]
[stress_hydro_cladding_min]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = '${cladding_block}'
[]
[contact_pressure_max]
type = NodalExtremeValue
variable = fuel_cladding_mechanical_normal_lm
boundary = 'fuel_outer_radial_surface'
[]
# strain information
[strain_solid_swelling_fuel_avg]
type = ElementAverageValue
variable = solid_swelling
block = 'fuel'
[]
[strain_gas_swelling_fuel_avg]
type = ElementAverageValue
variable = effective_fission_gas_strain
block = 'fuel'
[]
[strain_hot_pressing_fuel_avg]
type = ElementAverageValue
variable = effective_hot_pressing_strain
block = 'fuel'
[]
[strain_volumetric_fuel_avg]
type = ElementAverageValue
variable = firstinv_strain
block = 'fuel'
[]
[strain_axial_fuel_avg]
type = ParsedPostprocessor
pp_names = 'disp_y_fuel_top_surface_avg disp_y_fuel_bottom_surface_avg'
expression = '(disp_y_fuel_top_surface_avg - disp_y_fuel_bottom_surface_avg) / ${fuel_height}'
[]
[disp_y_fuel_top_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = 'fuel_top'
[]
[disp_y_fuel_top_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = 'fuel_top'
[]
[disp_y_fuel_bottom_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = 'fuel_bottom'
[]
[disp_y_fuel_bottom_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = 'fuel_bottom'
[]
[disp_x_fuel_radial_surface_max]
type = NodalExtremeValue
variable = disp_x
boundary = 'fuel_outer_radial_surface'
[]
[disp_x_fuel_radial_surface_avg]
type = SideAverageValue
variable = disp_x
boundary = 'fuel_outer_radial_surface'
[]
[disp_x_cladding_interior_max]
type = NodalExtremeValue
variable = disp_x
boundary = 'cladding_inside_right'
[]
[disp_x_cladding_interior_min]
type = NodalExtremeValue
variable = disp_x
boundary = 'cladding_inside_right'
value_type = min
[]
[disp_x_cladding_interior_avg]
type = SideAverageValue
variable = disp_x
boundary = 'cladding_inside_right'
[]
[disp_x_cladding_exterior_max]
type = NodalExtremeValue
variable = disp_x
boundary = 'cladding_outside_right'
[]
[disp_x_cladding_exterior_avg]
type = SideAverageValue
variable = disp_x
boundary = 'cladding_outside_right'
[]
[anisotropic_swelling_factor]
type = FunctionValuePostprocessor
function = anisotropic_swelling_factor
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = fuel_outside_all
[]
# geometric information
[volume_cladding_interior]
type = InternalVolume
boundary = 'cladding_inside_all'
[]
[volume_fuel]
type = InternalVolume
boundary = 'fuel_outside_all'
execute_on = 'initial timestep_end'
[]
[volume_plenum]
type = InternalVolume
boundary = 'inside_surfaces'
execute_on = 'initial timestep_end'
addition = sodium_volume
[]
[plenum_ratio]
type = ParsedPostprocessor
pp_names = 'volume_plenum volume_fuel'
expression = 'volume_plenum / volume_fuel'
execute_on = 'initial timestep_end'
[]
[volume_sodium]
type = FunctionValuePostprocessor
function = sodium_volume
execute_on = 'initial timestep_end'
[]
# energy information
[flux_clad]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = 'cladding_inside_right'
diffusivity = thermal_conductivity
[]
[flux_fuel]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = 'fuel_contact_surfaces'
diffusivity = thermal_conductivity
[]
[power_integral]
type = ADElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = fuel
[]
[linear_heat_generation_rate]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[burnup_avg]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[burnup_max]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fission_rate_avg]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
# fission gas information
[fg_produced]
type = ADElementIntegralMaterialProperty
mat_prop = fgm_produced
block = fuel
[]
[fg_released]
type = ADElementIntegralMaterialProperty
mat_prop = fgm_released
block = fuel
execute_on = 'initial timestep_end'
[]
[fg_percent]
type = FGRPercent
fission_gas_released = fg_released
fission_gas_generated = fg_produced
[]
[interconnected_porosity_fuel_avg]
type = ElementAverageValue
variable = interconnected_porosity
block = fuel
execute_on = 'initial timestep_end'
[]
[porosity_fuel_avg]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[porosity_fuel_max]
type = ElementExtremeValue
variable = porosity
block = fuel
[]
[porosity_fuel_min]
type = ElementExtremeValue
variable = porosity
value_type = min
block = fuel
[]
[porosity_sodium_logging_avg]
type = ElementAverageValue
variable = sodium_logged_porosity
block = fuel
[]
# extras
[actual_time_step_limit]
type = MaterialTimeStepPostprocessor
block = 'fuel ${cladding_block}'
outputs = none
[]
[time_step_limit]
type = ParsedPostprocessor
expression = 'if(actual_time_step_limit > 1e6, 1e6, actual_time_step_limit)'
pp_names = 'actual_time_step_limit'
[]
[max_wastagethickness]
type = ElementExtremeValue
value_type = max
variable = wastage_thickness
# outputs = 'console'
[]
[max_wst_temp]
type = ElementExtremeValue
value_type = max
variable = temp
proxy_variable = wastage_thickness
block = '${cladding_block}'
[]
[max_wst_burnup]
type = ElementExtremeValue
value_type = max
variable = burnup
proxy_variable = wastage_thickness
block = '${cladding_block}'
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[]
[VectorPostprocessors]
[id_wastage]
type = FuelRodLineValueSampler
variable = wastage_thickness
material = 'clad'
fraction = 0.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = csv_wst_a
[]
[id_pen_total]
type = FuelRodLineValueSampler
variable = total_id_reduction
material = 'clad'
fraction = 0.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[od_wastage]
type = FuelRodLineValueSampler
variable = cc_wastage_thickness
material = 'clad'
fraction = 1.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[fuel_melting]
type = FuelRodLineValueSampler
variable = fuel_melting_thickness
material = 'fuel'
fraction = 1.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[]
[PerformanceMetricOutputs]
outputs = 'console'
[]
[Outputs]
# print_linear_residuals = true
# color = true
# perf_graph = true
# sync_times = ${time_spots}
[checkpoint]
type = Checkpoint
time_step_interval = 1
enable = false
[]
[exodus]
type = Exodus
sync_only = true
sync_times = ${time_spots}
enable = false
additional_execute_on = 'FAILED'
[]
[exodus_final]
type = Exodus
execute_on = 'FINAL'
[]
[console]
type = Console
show = 'time_step_size temp_fuel_avg temp_fuel_centerline_max temp_cladding_avg temp_cladding_max stress_vonmises_fuel_max stress_hydro_fuel_max stress_hydro_fuel_min contact_pressure_max strain_axial_fuel_avg power_integral burnup_avg fission_rate_avg fg_percent porosity_fuel_avg time_step_limit anisotropic_swelling_factor plenum_ratio volume_fuel volume_plenum max_wastagethickness max_cdf'
[]
[csv_wst_a]
type = CSV
sync_only = true
sync_times = ${time_spots_a}
enable = ${enable_a}
execute_postprocessors_on = none
create_latest_symlink = true
[]
[csv_general]
type = CSV
sync_only = true
sync_times = ${time_spots}
enable = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/FFTF/IFR1/analysis/IFR1_base.i)
# IFR-1 ASSESSMENT CASE
# BISON recreation of the 169-pin IFR-1 experiment, which was irradiated in the
# FFTF from 9/1986 to 10/1988 to a peak burnup of about 10 at%. The assessment
# consists of three generic pins (U-10Zr, U-8Pu-10Zr, and U-19Pu-10Zr) which
# are compared against all available legacy calculations and PIE measurements
# for all 169 pins in the experiment. Composition-specific values are stored in
# three '.params' files. Units are in standard SI: J, K, kg, m, Pa, s.
# For a more complete description of the experiment, see [Dodds, 1986-1],
# [Dodds, 1986-2], [Porter and Tsai, 2011], and [Tsai et al., 1986]. For a more
# complete description of development and results of this assessment, see
# [Greenquist et al., 2021].
#
# To simulate one of the cases, use the combined input file option
# with one of the '.params' files. For example:
# mpiexec -n 4 ../../../../../bison-opt -i 'IFR1_base.i U-10Zr.params'
initial_fuel_density = 15800
[GlobalParams]
dim = 2
order = SECOND
family = LAGRANGE
elem_type = QUAD8
energy_per_fission = 3.2e-11 # [Shultis and Faw, 2008]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
temperature = T
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = ref
extra_tag_vectors = ref
[]
[Mesh]
coord_type = RZ
# Mesh includes a fuel slug, top and bottom blanket slugs, and cladding. All
# dimensions are in meters (m). Nominal dimensions come from [Dodds, 1986-2].
type = MeshGeneratorMesh
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
# build cladding
[bottom_plug]
type = GeneratedMeshGenerator
xmin = 0.0
xmax = 0.00287
nx = 3
ymin = 0.0
ymax = 0.015
ny = 5
[]
[bottom_corner]
type = GeneratedMeshGenerator
xmin = 0.00287
xmax = 0.00343
nx = 4
ymin = 0.0
ymax = 0.015
ny = 5
[]
[bottom_corner_rename_side]
type = SideSetsFromNormalsGenerator
input = bottom_corner
normals = '0 1 0'
new_boundary = new_side
[]
[combine_bottom_and_bottom_corner]
type = StitchedMeshGenerator
inputs = 'bottom_plug bottom_corner_rename_side'
stitch_boundaries_pairs = 'right left'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
[cladding_wall]
type = GeneratedMeshGenerator
xmin = 0.00287
xmax = 0.00343
nx = 4
ymin = 0.015
ymax = 2.239
ny = 400
[]
[cladding_wall_rename_side]
type = SideSetsFromNormalsGenerator
input = cladding_wall
normals = '0 1 0'
new_boundary = new_side
[]
[combine_bottom_and_wall]
type = StitchedMeshGenerator
inputs = 'combine_bottom_and_bottom_corner cladding_wall_rename_side'
stitch_boundaries_pairs = '4 bottom'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
[top_corner]
type = GeneratedMeshGenerator
xmin = 0.00287
xmax = 0.00343
nx = 4
ymin = 2.239
ymax = 2.254
ny = 5
[]
[top_corner_rename_side]
type = SideSetsFromNormalsGenerator
input = top_corner
normals = '-1 0 0'
new_boundary = new_side
[]
[combine_wall_and_top_corner]
type = StitchedMeshGenerator
inputs = 'combine_bottom_and_wall top_corner_rename_side'
stitch_boundaries_pairs = '4 bottom'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
[top_plug]
type = GeneratedMeshGenerator
xmin = 0.0
xmax = 0.00287
nx = 3
ymin = 2.239
ymax = 2.254
ny = 5
[]
[cladding_all]
type = StitchedMeshGenerator
inputs = 'combine_wall_and_top_corner top_plug'
stitch_boundaries_pairs = '4 right'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
# build fuel and blanket
[bottom_blanket]
type = GeneratedMeshGenerator
xmin = 0.0
xmax = 0.00249
nx = 6
ymin = 0.0162
ymax = 0.1812
ny = 40
[]
[fuel_slug]
type = GeneratedMeshGenerator
xmin = 0.0
xmax = 0.00249
nx = 6
ymin = 0.1812
ymax = 1.0956
ny = 300
[]
[top_blanket]
type = GeneratedMeshGenerator
xmin = 0.0
xmax = 0.00249
nx = 6
ymin = 1.0956
ymax = 1.2606
ny = 40
[]
[fuel_two]
type = StitchedMeshGenerator
inputs = 'bottom_blanket fuel_slug'
stitch_boundaries_pairs = 'top bottom'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
[fuel_all]
type = StitchedMeshGenerator
inputs = 'fuel_two top_blanket'
stitch_boundaries_pairs = 'top bottom'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
# combine and name subdomains
[combine_fuel_cladding]
type = CombinerGenerator
inputs = 'cladding_all fuel_all'
[]
[name_cladding]
type = SubdomainBoundingBoxGenerator
input = combine_fuel_cladding
bottom_left = '0.0 0.0 0.0'
top_right = '0.00343 2.254 0'
location = INSIDE
block_id = 0
block_name = clad
[]
[name_blanket]
type = SubdomainBoundingBoxGenerator
input = name_cladding
bottom_left = '0.0 0.0162 0.0'
top_right = '0.00249 1.2606 0.0'
location = INSIDE
block_id = 1
block_name = blanket
[]
[name_fuel]
type = SubdomainBoundingBoxGenerator
input = name_blanket
bottom_left = '0.0 0.1812 0.0'
top_right = '0.00249 1.0956 0.0'
location = INSIDE
block_id = 2
block_name = pellet
[]
# name boundaries
[name_centerline]
type = SideSetsFromNormalsGenerator
input = name_fuel
normals = '-1 0 0'
new_boundary = centerline
replace = true
[]
[name_slug_outer_surface]
type = SideSetsFromNormalsGenerator
input = name_centerline
normals = '1 0 0'
new_boundary = pellet_outer_radial_surface
replace = true
[]
[name_slug_ends]
type = SideSetsFromPointsGenerator
input = name_slug_outer_surface
points = '0.50e-3 0.0162 0.0
0.50e-3 1.2606 0.0'
new_boundary = 'bottom_of_bottom_pellet top_of_top_pellet'
replace = true
[]
[name_cladding_inside]
type = SideSetsFromPointsGenerator
input = name_slug_ends
points = '0.50e-3 0.015 0.0
0.00287 1.0956 0.0
0.50e-3 2.239 0.0'
new_boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
replace = true
[]
[name_cladding_outer_surface]
type = SideSetsFromPointsGenerator
input = name_cladding_inside
points = '0.00343 1.0956 0.0
0.50e-3 0.0 0.0
0.50e-3 2.254 0.0'
new_boundary = 'clad_outside_right clad_outside_bottom clad_outside_top'
replace = true
[]
[]
[Variables]
[T] # Temperature (K)
initial_condition = 298
[]
[]
[AuxVariables]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[fuel_clad_gap_width]
order = FIRST
family = LAGRANGE
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[fuel_volumetric_strain]
block = 'pellet blanket'
order = CONSTANT
family = MONOMIAL
[]
[clad_hoop_stress]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[clad_hoop_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[clad_hoop_elastic_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[clad_hoop_total_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[local_power]
block = 'pellet blanket'
order = CONSTANT
family = MONOMIAL
[]
[T_coolant]
order = CONSTANT
family = MONOMIAL
[]
[pin_lhr]
block = 'pellet blanket'
order = CONSTANT
family = MONOMIAL
[]
[eutectic_thickness]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[assembly_lhr_avg_function]
# Subassembly average power as a function of time. x: time (s), y: Average
# LHGR (W/m). See [Greenquist et al., 2021].
type = PiecewiseLinear
x = '0 3600 11900880 11904480 21097440 21101040 29542320 29545920
35274240 35277840 42665040 42668640 53615520 53619120 53705520 53791920'
y = '0 38276 36089 33902 31988 33355 31988 30074
29254 27614 25153 26520 26247 26.2 26.2 26.2'
[]
[lhr_peaking_factor_function]
# Axial variation from the average LHGR. See [Porter and Tsai, 2011] and
# [Greenquist et al., 2021].
type = ParsedFunction
symbol_names = 'a0 a1 a2 a3 a4 mb bb mt bt
z_bot z_top bu_final bu_now'
symbol_values = '0.68687 2.6352 -3.20026 1.35e-5 2.69e-5 0.279 0.084 -0.301 0.416
0.1812 1.0956 0.05 burnup_max'
expression = 'bu_frac := bu_now / bu_final;
p_bot := (mb * y + bb) * bu_frac;
p_top := (mt * y + bt) * bu_frac;
z_bbot := 0.0162; p_b := if(y < z_bbot, 0, p_bot);
z_btop := 1.2606; p_t := if(y > z_btop, 0, p_top);
z1 := y - z_bot;
p_mid := a0 + a1 * z1 + a2 * z1^2 + a3 * z1^3 + a4 * z1^4;
if(y < z_bot, p_b, if(y > z_top, p_t, p_mid))'
[]
[pin_lhr_function]
type = CompositeFunction
functions = 'assembly_lhr_avg_function lhr_peaking_factor_function'
[]
[coolant_flux_function]
# Subassembly coolant mass flux. x: time (s), y: flux (kg m^-2 s^-1). See
# [Porter and Tsai, 2011].
type = PiecewiseLinear
x = '0 3600 11900880 11904480 21097440 21101040 29542320 29545920
42665040 42668640 53615520 53619120 53791920'
y = '5690 5740 5740 5900 5900 5930 5930 6040
6040 6090 6090 5690 5690'
[]
[coolant_pressure_function]
# Constant coolant inlet pressure (Pa) taken from [Cabell, 1980].
type = ConstantFunction
value = 1018327
[]
[coolant_T_in_function]
# Sodium coolant inlet temperature (K). See [Porter and Tsai, 2011] and
# [Greenquist et al., 2021].
type = PiecewiseLinear
x = '0 3600 53619120 53705520 53791920'
y = '298.0 633.15 633.15 305.0 305.0'
[]
[sodium_volume_function]
# The initial sodium height is assumed to be equal to the initial fuel
# height and sodium infiltration is ignored.
type = ParsedFunction
symbol_names = 'pellet_outer_radius cladding_gap_width blanket_top blanket_bottom'
symbol_values = '0.00249 0.00038 1.2606 0.0162'
expression = 'pi * ((pellet_outer_radius + cladding_gap_width)^2 -
pellet_outer_radius^2) * (blanket_top - blanket_bottom)'
[]
[gas_volume_function]
type = ParsedFunction
symbol_names = 'clad_internal_volume fuel_volume sodium_volume'
symbol_values = 'clad_internal_volume fuel_volume sodium_volume'
expression = 'abs(clad_internal_volume) - abs(fuel_volume) - abs(sodium_volume)'
[]
[sodium_conductivity_function]
# Thermal conductivity (W m^-1 K^-1) of the pin gap sodium according to
# [Fink and Leibowitz, 1995]
type = ParsedFunction
symbol_names = 'A B C D'
symbol_values = '124.67 -0.11381 5.5226e-5 -1.1842e-8'
expression = 'A + B * t + C * t^2 + D * t^3'
[]
[creep_timestep_min_function]
type = ParsedFunction
symbol_names = 'creep_timestep_fuel creep_timestep_blanket creep_timestep_clad'
symbol_values = 'creep_timestep_fuel creep_timestep_blanket creep_timestep_clad'
expression = 'min(min(creep_timestep_fuel, creep_timestep_blanket),
creep_timestep_clad)'
[]
[fuel_axial_elongation_max_pct_function]
type = ParsedFunction
symbol_names = 'fuel_axial_elongation_min fuel_axial_elongation_max pellet_height'
symbol_values = 'fuel_axial_elongation_min fuel_axial_elongation_max 0.9144'
expression = '(fuel_axial_elongation_max - fuel_axial_elongation_min) /
pellet_height * 100'
[]
[fuel_radial_dilation_max_pct_function]
type = ParsedFunction
symbol_names = 'fuel_radial_dilation_max pellet_outer_radius'
symbol_values = 'fuel_radial_dilation_max 0.00249'
expression = 'fuel_radial_dilation_max / pellet_outer_radius * 100'
[]
[clad_axial_elongation_max_pct_function]
type = ParsedFunction
symbol_names = 'clad_axial_elongation_max plug_height cladding_total_height'
symbol_values = 'clad_axial_elongation_max 0.015 2.254'
expression = 'clad_axial_elongation_max / (plug_height + cladding_total_height) *
100'
[]
[clad_radial_dilation_max_pct_function]
type = ParsedFunction
symbol_names = 'clad_radial_dilation_max cladding_outer_radius'
symbol_values = 'clad_radial_dilation_max 0.00343'
expression = 'clad_radial_dilation_max / cladding_outer_radius * 100'
[]
[plenum_compressibility_function]
# Accounts for nonideality in fission gas [Hobbs and Charboneau, 2020].
type = ParsedFunction
symbol_names = 'plenum_pressure A B C'
symbol_values = 'plenum_pressure 1.002 -3.4e-8 -1.9e-15'
expression = 'A + B * plenum_pressure + C * plenum_pressure^2'
[]
[compressibility_times_temperature_function]
type = ParsedFunction
symbol_names = 'plenum_temperature plenum_compressibility'
symbol_values = 'plenum_temperature plenum_compressibility'
expression = 'plenum_temperature * plenum_compressibility'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy
creep_strain_zz elastic_strain_xx elastic_strain_yy
elastic_strain_zz strain_xx strain_yy strain_zz'
[fuel_mechanics]
block = 'pellet blanket'
eigenstrain_names = 'fuel_thermal_strain fuel_gaseous_strain
fuel_solid_strain'
extra_vector_tags = ref
[]
[clad_mechanics]
block = clad
eigenstrain_names = 'clad_thermal_strain clad_gaseous_strain'
extra_vector_tags = ref
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = ref
[]
[heat_conduction_time_derivative]
type = HeatConductionTimeDerivative
variable = T
extra_vector_tags = ref
[]
[heat_conduction]
type = HeatConduction
variable = T
extra_vector_tags = ref
[]
[heat_source]
type = FissionRateHeatSource
block = 'pellet blanket'
variable = T
fission_rate = fission_rate
extra_vector_tags = ref
[]
[]
[AuxKernels]
[gap_conductance]
type = MaterialRealAux
variable = gap_conductance
property = gap_conductance
boundary = pellet_outer_radial_surface
[]
[fuel_clad_gap_width]
type = ParsedAux
variable = fuel_clad_gap_width
coupled_variables = penetration
expression = '-penetration'
[]
[failed_element]
type = MaterialRealAux
variable = element_failed
property = failed
boundary = clad_outside_right
[]
[fuel_volumetric_strain]
type = RankTwoScalarAux
block = 'pellet blanket'
variable = fuel_volumetric_strain
rank_two_tensor = total_strain
scalar_type = VolumetricStrain
[]
[clad_hoop_stress]
type = RankTwoAux
block = clad
variable = clad_hoop_stress
rank_two_tensor = stress
index_i = 2
index_j = 2
[]
[clad_hoop_creep_strain]
type = RankTwoAux
block = clad
variable = clad_hoop_creep_strain
rank_two_tensor = creep_strain
index_i = 2
index_j = 2
[]
[clad_hoop_elastic_strain]
type = RankTwoAux
block = clad
variable = clad_hoop_elastic_strain
rank_two_tensor = elastic_strain
index_i = 2
index_j = 2
[]
[clad_hoop_total_strain]
type = RankTwoAux
block = clad
variable = clad_hoop_total_strain
rank_two_tensor = total_strain
index_i = 2
index_j = 2
[]
[local_power]
type = FunctionAux
block = 'pellet blanket'
variable = local_power
function = lhr_peaking_factor_function
[]
[T_coolant]
type = MaterialRealAux
variable = T_coolant
property = coolant_temperature
boundary = clad_outside_right
[]
[pin_lhr]
type = FunctionAux
block = 'pellet blanket'
variable = pin_lhr
function = pin_lhr_function
[]
[eutectic_thickness]
type = DiffusionalEutecticThicknessFCCI
block = clad
variable = eutectic_thickness
temperature = T
boundary = clad_inside_right
execute_on = TIMESTEP_END
[]
[]
[Contact]
# Assessment uses frictionless contact. See [Greenquist et al., 2021] for
# a study comparing the various contact models.
[frictionless_fuel_clad_mechanical]
primary = clad_inside_right
secondary = pellet_outer_radial_surface
model = frictionless
formulation = kinematic
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = T
primary = clad_inside_right
secondary = pellet_outer_radial_surface
gap_geometry_type = CYLINDER
gap_conductivity_function = sodium_conductivity_function
gap_conductivity_function_variable = T
quadrature = true
min_gap = 0.00038 # Set to the initial gap width.
tangential_tolerance = 1e-4
[]
[]
[BCs]
[fix_disp_x_all]
type = DirichletBC
variable = disp_x
value = 0.0
boundary = centerline
[]
[fix_disp_y_all]
type = DirichletBC
variable = disp_y
value = 0.0
boundary = 'clad_outside_bottom bottom_of_bottom_pellet'
[]
[Pressure]
[coolant_pressure]
function = coolant_pressure_function
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
[]
[]
[PlenumPressure]
[plenum_pressure]
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
startup_time = 0
initial_pressure = 101325 # 1 atm [Greenquist et al., 2021]
volume = gas_volume
material_input = fission_gas_released
R = 8.3143
temperature = plenum_temperature
output = plenum_pressure
[]
[]
[]
[PlenumTemperature]
[plenum_temperature]
temperature = T
boundary = 'bottom_of_bottom_pellet pellet_outer_radial_surface
top_of_top_pellet clad_inside_bottom clad_inside_right
clad_inside_top'
inner_surfaces = 'bottom_of_bottom_pellet pellet_outer_radial_surface
top_of_top_pellet'
outer_surfaces = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[CoolantChannel]
[convective_clad_surface]
variable = T
inlet_temperature = coolant_T_in_function
inlet_pressure = coolant_pressure_function
inlet_massflux = coolant_flux_function
coolant_material = sodium
rod_diameter = 0.00686 # [Dodds, 1986-2]
rod_pitch = 0.00823 # [Greenquist et al., 2021]
linear_heat_rate = assembly_lhr_avg_function
axial_power_profile = lhr_peaking_factor_function
subchannel_geometry = triangular
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
[]
[]
[Materials]
###### FUEL ######
[fuel_fission_rate]
type = UPuZrFissionRate
block = pellet
rod_linear_power = assembly_lhr_avg_function
axial_power_profile = lhr_peaking_factor_function
pellet_radius = 0.00249 # [Dodds, 1986-2]
initial_X_Zr = 0.224 # [Dodds, 1986-2]
X_Zr = 0.224
outputs = exodus
output_properties = fission_rate
[]
[fuel_burnup]
type = UPuZrBurnup
block = pellet
density = ${initial_fuel_density} # [Dodds, 1986-2]
initial_X_Pu = ${initial_X_Pu} # [Dodds, 1986-2]
initial_X_Zr = 0.224 # [Dodds, 1986-2]
outputs = exodus
output_properties = burnup
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density} # [Dodds, 1986-2]
[]
[fuel_sodium_logging]
type = UPuZrSodiumLogging
block = pellet
porosity = porosity
sodium_infiltration_fraction = ${Na_infiltration_fraction} # [Bauer and Holland, 1995]
outputs = exodus
output_properties = sodium_logged_porosity
[]
[fuel_thermal_properties]
type = UPuZrThermal
block = pellet
X_Pu = ${initial_X_Pu} # [Dodds, 1986-2]
X_Zr = 0.224 # [Dodds, 1986-2]
spheat_model = savage
thcond_model = lanl
porosity_model = logged
porosity = porosity
sodium_logged_porosity = sodium_logged_porosity
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
block = pellet
X_Pu = ${initial_X_Pu} # [Dodds, 1986-2]
X_Zr = 0.224 # [Dodds, 1986-2]
porosity = porosity
[]
[fuel_creep]
type = UPuZrCreepUpdate
block = pellet
porosity = porosity
max_inelastic_increment = 3e-3
effective_inelastic_strain_name = fuel_effective_creep_strain
[]
[fuel_gaseous_swelling]
type = UPuZrGaseousEigenstrain
block = pellet
fission_rate = fission_rate
anisotropic_factor = 0.5 # [Pahl et al., 1990]
bubble_number_density = 5e17 # [Casagranda et al., 2020]
interconnection_initiating_porosity = ${interconnection_init_porosity} # [Casagranda et al., 2020]
interconnection_terminating_porosity = ${interconnection_term_porosity} # [Casagranda et al., 2020]
eigenstrain_name = fuel_gaseous_strain
outputs = exodus
output_properties = 'gas_swelling porosity interconnectivity'
[]
[fuel_solid_swelling]
type = BurnupDependentEigenstrain
block = pellet
eigenstrain_name = fuel_solid_strain
swelling_name = solid_swelling
outputs = exodus
output_properties = solid_swelling
swelling_factor = 0 # Solid swelling is negligible below 10% burnup
[]
[fuel_fission_gas_release]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
porosity = porosity
critical_porosity = ${critical_porosity} # [Casagranda et al., 2020]
fractional_fgr_initial = ${fgr_init} # [Casagranda et al., 2020]
fractional_fgr_post = ${fgr_post} # [Casagranda et al., 2020]
[]
[fuel_thermal_expansion]
type = UPuZrThermalExpansionEigenstrain
block = pellet
stress_free_temperature = 298
eigenstrain_name = fuel_thermal_strain
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
block = pellet
inelastic_models = fuel_creep
[]
###### BLANKET ######
[blanket_fission_rate]
type = UPuZrFissionRate
block = blanket
rod_linear_power = assembly_lhr_avg_function
axial_power_profile = lhr_peaking_factor_function
pellet_radius = 0.00249
initial_X_Zr = 0.224 # 10 wt% [Dodds, 1986-2]
X_Zr = 0.224
outputs = exodus
output_properties = fission_rate
[]
[blanket_burnup]
type = UPuZrBurnup
block = blanket
density = 15800 # [Dodds, 1986-2]
initial_X_Pu = 0 # [Dodds, 1986-2]
initial_X_Zr = 0.224 # [Dodds, 1986-2]
outputs = exodus
output_properties = burnup
[]
[blanket_density]
type = StrainAdjustedDensity
block = blanket
strain_free_density = 15800 # [Dodds, 1986-2]
[]
[blanket_sodium_logging]
type = UPuZrSodiumLogging
block = blanket
porosity = porosity
sodium_infiltration_fraction = 0.08 # [Bauer and Holland, 1995]
outputs = exodus
output_properties = sodium_logged_porosity
[]
[blanket_thermal_properties]
type = UPuZrThermal
block = blanket
X_Pu = 0 # [Dodds, 1986-2]
X_Zr = 0.224 # [Dodds, 1986-2]
spheat_model = savage
thcond_model = lanl
porosity_model = logged
porosity = porosity
sodium_logged_porosity = sodium_logged_porosity
[]
[blanket_elasticity_tensor]
type = UPuZrElasticityTensor
block = blanket
X_Pu = 0 # [Dodds, 1986-2]
X_Zr = 0.224 # [Dodds, 1986-2]
porosity = porosity
[]
[blanket_creep]
type = UPuZrCreepUpdate
block = blanket
porosity = porosity
max_inelastic_increment = 3e-3
effective_inelastic_strain_name = blanket_effective_creep_strain
[]
[blanket_gaseous_swelling]
type = UPuZrGaseousEigenstrain
block = blanket
fission_rate = fission_rate
anisotropic_factor = 0.5 # [Pahl et al., 1990]
bubble_number_density = 5e17 # [Casagranda et al., 2020]
interconnection_initiating_porosity = 0.25 # [Casagranda et al., 2020]
interconnection_terminating_porosity = 0.27 # [Casagranda et al., 2020]
eigenstrain_name = fuel_gaseous_strain
outputs = exodus
output_properties = 'gas_swelling porosity interconnectivity'
[]
[blanket_solid_swelling]
type = BurnupDependentEigenstrain
block = blanket
eigenstrain_name = fuel_solid_strain
swelling_name = solid_swelling
outputs = exodus
output_properties = solid_swelling
swelling_factor = 0 # Solid swelling is negligible below 10% burnup
[]
[blanket_fission_gas_release]
type = UPuZrFissionGasRelease
block = blanket
fission_rate = fission_rate
porosity = porosity
critical_porosity = 0.26 # [Casagranda et al., 2020]
fractional_fgr_initial = 0.454 # [Casagranda et al., 2020]
fractional_fgr_post = 0.714 # [Casagranda et al., 2020]
[]
[blanket_thermal_expansion]
type = UPuZrThermalExpansionEigenstrain
block = blanket
stress_free_temperature = 298
eigenstrain_name = fuel_thermal_strain
[]
[blanket_elastic_stress]
type = ComputeMultipleInelasticStress
block = blanket
inelastic_models = blanket_creep
[]
###### CLADDING ######
[fast_neutron_flux]
type = UPuZrFastNeutronFlux
pellet_radius = 0.00249
axial_power_profile = lhr_peaking_factor_function
rod_linear_power = assembly_lhr_avg_function
initial_density = 15800 # [Dodds, 1986-2]
initial_X_Pu = ${initial_X_Pu} # [Dodds, 1986-2]
initial_X_Zr = 0.224 # [Dodds, 1986-2]
enrichment_U235 = ${enrichment_U235} # [Dodds, 1986-2]
enrichment_Pu240 = 0.061 # [Dodds, 1986-2]
calculate_fluence = true
outputs = exodus
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7761 # [Hofman et al., 1989]
[]
[clad_thermal_properties]
type = D9Thermal
block = clad
[]
[clad_gaseous_swelling]
type = D9VolumetricSwellingEigenstrain
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_gaseous_strain
[]
[clad_thermal_expansion]
type = D9ThermalExpansionEigenstrain
block = clad
eigenstrain_name = clad_thermal_strain
stress_free_temperature = 298
[]
[clad_elasticity_tensor]
type = D9ElasticityTensor
block = clad
[]
[clad_creep]
type = D9CreepUpdate
block = clad
max_inelastic_increment = 3e-3 # 1e-2
effective_inelastic_strain_name = clad_effective_creep_strain
[]
[clad_failure]
type = D9FailureClad
method = steady_state
hoop_stress = stress_zz
boundary = clad_outside_right
outputs = exodus
output_properties = cdf_failure
[]
[inner_clad_wastage]
type = MetallicFuelWastage
block = clad
method = flux_d9
burnup = 0 # not used but must be specified
outputs = exodus
output_properties = wastage_thickness
[]
[outer_clad_wastage]
type = MetallicFuelCoolantWastage
block = clad
clad_material = SS316 # does not have D9
use_effective_method = true
outputs = exodus
[]
[clad_wastage_fraction]
type = MetallicFuelWastageDamage
block = clad
wastage_thickness = wastage_thickness
pellet_length = 0.9144
pellet_y_start = 0.1812
cladding_thickness = 0.00056
outputs = exodus
[]
[clad_damage_fraction]
type = ScalarMaterialDamage
block = clad
damage_index = thinning_fraction
outputs = exodus
[]
[clad_elastic_stress]
type = ComputeMultipleInelasticStress
block = clad
inelastic_models = clad_creep
[]
[]
[Dampers]
[T_damper]
type = MaxIncrement
variable = T
max_increment = 25
[]
[disp_x_damper]
type = MaxIncrement
variable = disp_x
max_increment = 3.00E-04
[]
[disp_y_damper]
type = MaxIncrement
variable = disp_y
max_increment = 3.00E-04
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
automatic_scaling = true
compute_scaling_once = false
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package
-ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist
51'
line_search = NONE
l_max_its = 30
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 5e-7
start_time = 0
end_time = 53791920
dtmin = 1e-2
dtmax = 1e6
verbose = true
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[TimeStepper]
type = IterationAdaptiveDT
dt = 100
optimal_iterations = 10
iteration_window = 4
growth_factor = 1.25
cutback_factor = 0.512
linear_iteration_ratio = 100
force_step_every_function_point = true
timestep_limiting_function = assembly_lhr_avg_function
timestep_limiting_postprocessor = creep_timestep_min
[]
[]
[Postprocessors]
###### POWER ######
[fission_rate_density_avg]
type = ElementAverageValue
block = 'pellet blanket'
variable = fission_rate
outputs = csv
[]
[fast_neutron_fluence_avg]
type = ElementAverageValue
variable = fast_neutron_fluence
outputs = 'csv chkfile'
[]
[fast_neutron_fluence_max]
type = ElementExtremeValue
variable = fast_neutron_fluence
value_type = max
outputs = 'csv chkfile'
[]
[pin_hr_tot]
type = ElementIntegralPower
block = 'pellet blanket'
variable = T # required but not actually used
use_material_fission_rate = true
fission_rate_material = fission_rate
outputs = csv
[]
[pin_lhr_avg]
type = FunctionValuePostprocessor
function = assembly_lhr_avg_function
outputs = csv
[]
###### HEAT TRANSFER ######
[radial_heat_flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = T
boundary = pellet_outer_radial_surface
diffusivity = thermal_conductivity
outputs = csv
[]
[radial_heat_flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = T
boundary = clad_outside_right
diffusivity = thermal_conductivity
outputs = csv
[]
###### FISSION GAS ###### (needed for simulation to run)
[fission_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = 'pellet blanket'
outputs = 'csv chkfile'
[]
[fission_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = 'pellet blanket'
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[fission_gas_released_pct]
type = FGRPercent
fission_gas_generated = fission_gas_produced
fission_gas_released = fission_gas_released
outputs = 'console csv chkfile'
[]
[clad_internal_volume]
type = InternalVolume
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[fuel_volume]
type = InternalVolume
boundary = 'bottom_of_bottom_pellet pellet_outer_radial_surface
top_of_top_pellet'
scale_factor = -1 # makes the fuel volume positive
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[sodium_volume]
type = FunctionValuePostprocessor
function = sodium_volume_function
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[gas_volume]
type = FunctionValuePostprocessor
function = gas_volume_function
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[plenum_compressibility]
type = FunctionValuePostprocessor
function = plenum_compressibility_function
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[compressibility_times_temperature]
type = FunctionValuePostprocessor
function = compressibility_times_temperature_function
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
###### BURNUP ######
[burnup_max]
type = ElementExtremeValue
block = pellet
variable = burnup
value_type = max
outputs = csv
[]
[burnup_max_pct]
type = LinearCombinationPostprocessor
pp_names = burnup_max
pp_coefs = 100
outputs = 'csv chkfile'
[]
[burnup_avg]
type = ElementAverageValue
block = pellet
variable = burnup
outputs = csv
[]
[burnup_avg_pct]
type = LinearCombinationPostprocessor
pp_names = burnup_avg
pp_coefs = 100
outputs = 'console csv chkfile'
[]
###### FUEL TEMPERATURE ######
[fuel_T_max]
type = ElementExtremeValue
block = pellet
variable = T
value_type = max
outputs = csv
[]
[fuel_T_max_peak]
type = TimeExtremeValue
postprocessor = fuel_T_max
value_type = max
outputs = 'csv chkfile'
[]
[fuel_T_surface_max]
type = NodalExtremeValue
boundary = pellet_outer_radial_surface
variable = T
value_type = max
outputs = csv
[]
[fuel_T_surface_max_peak]
type = TimeExtremeValue
postprocessor = fuel_T_surface_max
value_type = max
outputs = 'csv chkfile'
[]
###### CLADDING TEMPERATURE ######
[clad_T_max]
type = ElementExtremeValue
block = clad
variable = T
value_type = max
outputs = csv
[]
[clad_T_max_peak]
type = TimeExtremeValue
postprocessor = clad_T_max
value_type = max
outputs = csv
[]
[clad_T_inner_surface_max]
type = NodalExtremeValue
boundary = clad_inside_right
variable = T
value_type = max
outputs = csv
[]
[clad_T_inner_surface_max_peak]
type = TimeExtremeValue
postprocessor = clad_T_inner_surface_max
value_type = max
outputs = 'csv chkfile'
[]
[clad_T_outer_surface_max]
type = NodalExtremeValue
boundary = clad_outside_right
variable = T
value_type = max
outputs = csv
[]
[clad_T_outer_surface_max_peak]
type = TimeExtremeValue
postprocessor = clad_T_outer_surface_max
value_type = max
outputs = 'csv chkfile'
[]
###### COOLANT PARAMETERS ######
[T_coolant_in]
type = FunctionValuePostprocessor
function = coolant_T_in_function
outputs = csv
[]
[T_coolant_out]
type = ElementExtremeValue
block = clad
variable = T_coolant
value_type = max
outputs = csv
[]
[coolant_flux]
type = FunctionValuePostprocessor
function = coolant_flux_function
outputs = csv
[]
###### FUEL DEFORMATION ######
[fuel_axial_elongation_min]
type = NodalExtremeValue
block = pellet
variable = disp_y
value_type = min
outputs = csv
[]
[fuel_axial_elongation_max]
type = NodalExtremeValue
block = pellet
variable = disp_y
value_type = max
outputs = csv
[]
[fuel_axial_elongation_max_pct]
type = FunctionValuePostprocessor
function = fuel_axial_elongation_max_pct_function
outputs = 'console csv chkfile'
[]
[fuel_radial_dilation_max]
type = NodalExtremeValue
variable = disp_x
boundary = pellet_outer_radial_surface
value_type = max
outputs = csv
[]
[fuel_radial_dilation_max_pct]
type = FunctionValuePostprocessor
function = fuel_radial_dilation_max_pct_function
outputs = csv
[]
###### CLADDING DEFORMATION ######
[clad_axial_elongation_max]
type = NodalExtremeValue
block = clad
variable = disp_y
value_type = max
outputs = csv
[]
[clad_axial_elongation_max_pct]
type = FunctionValuePostprocessor
function = clad_axial_elongation_max_pct_function
outputs = 'csv chkfile'
[]
[clad_radial_dilation_max]
type = NodalExtremeValue
variable = disp_x
boundary = clad_outside_right
value_type = max
outputs = csv
[]
[clad_radial_dilation_max_pct]
type = FunctionValuePostprocessor
function = clad_radial_dilation_max_pct_function
outputs = 'console csv chkfile'
[]
###### GAP DEFORMATION AND MECHANICS ######
[gap_width_min]
type = NodalExtremeValue
variable = fuel_clad_gap_width
boundary = pellet_outer_radial_surface
value_type = min
outputs = csv
[]
[gap_width_max]
type = NodalExtremeValue
variable = fuel_clad_gap_width
boundary = pellet_outer_radial_surface
value_type = max
outputs = csv
[]
[gap_width_avg]
type = SideAverageValue
variable = fuel_clad_gap_width
boundary = pellet_outer_radial_surface
outputs = csv
[]
[contact_pressure_max]
type = NodalExtremeValue
variable = contact_pressure
boundary = pellet_outer_radial_surface
value_type = max
outputs = csv
[]
###### FUEL MECHANICS ######
[fuel_hydrostatic_stress_min]
type = ElementExtremeValue
block = 'pellet blanket'
variable = hydrostatic_stress
value_type = min
outputs = csv
[]
[fuel_hydrostatic_stress_max]
type = ElementExtremeValue
block = 'pellet blanket'
variable = hydrostatic_stress
value_type = max
outputs = csv
[]
[fuel_hydrostatic_stress_avg]
type = ElementAverageValue
block = 'pellet blanket'
variable = hydrostatic_stress
outputs = csv
[]
[fuel_volumetric_strain_avg]
type = ElementAverageValue
block = 'pellet blanket'
variable = fuel_volumetric_strain
outputs = 'csv chkfile'
[]
###### CLADDING MECHANICS ######
[clad_hoop_stress_max]
type = ElementExtremeValue
block = clad
variable = clad_hoop_stress
value_type = max
outputs = csv
[]
[clad_hoop_creep_strain_max]
type = ElementExtremeValue
block = clad
variable = clad_hoop_creep_strain
value_type = max
outputs = 'csv chkfile'
[]
[clad_hoop_elastic_strain_max]
type = ElementExtremeValue
block = clad
variable = clad_hoop_elastic_strain
value_type = max
outputs = 'csv chkfile'
[]
[clad_hoop_total_strain_max]
type = ElementExtremeValue
block = clad
variable = clad_hoop_total_strain
value_type = max
outputs = 'csv chkfile'
[]
[cdf_max]
type = ElementExtremeValue
variable = cdf_failure
value_type = max
outputs = 'console csv'
[]
###### PERFORMANCE ######
[creep_timestep_fuel]
type = MaterialTimeStepPostprocessor
block = pellet
outputs = csv
[]
[creep_timestep_blanket]
type = MaterialTimeStepPostprocessor
block = blanket
outputs = csv
[]
[creep_timestep_clad]
type = MaterialTimeStepPostprocessor
block = clad
outputs = csv
[]
[creep_timestep_min]
type = FunctionValuePostprocessor
function = creep_timestep_min_function
outputs = csv
[]
###### SWELLING ######
[solid_swelling_avg]
type = ElementAverageValue
block = pellet
variable = solid_swelling
outputs = 'csv chkfile'
[]
[gas_swelling_avg]
type = ElementAverageValue
block = pellet
variable = gas_swelling
outputs = 'csv chkfile'
[]
[porosity_avg]
type = ElementAverageValue
block = pellet
variable = porosity
outputs = 'csv chkfile'
[]
[sodium_logged_porosity_avg]
type = ElementAverageValue
block = pellet
variable = sodium_logged_porosity
outputs = 'csv chkfile'
[]
###### CLADDING WASTAGE ######
[wastage_max]
type = ElementExtremeValue
block = clad
variable = wastage_thickness
value_type = max
outputs = 'csv chkfile'
[]
[wastage_min]
type = ElementExtremeValue
block = clad
variable = wastage_thickness
value_type = min
outputs = csv
[]
[wastage_avg]
type = ElementAverageValue
block = clad
variable = wastage_thickness
outputs = csv
[]
[eutectic_max]
type = ElementExtremeValue
block = clad
variable = eutectic_thickness
value_type = max
outputs = csv
[]
[eutectic_min]
type = ElementExtremeValue
block = clad
variable = eutectic_thickness
value_type = min
outputs = csv
[]
[eutectic_avg]
type = ElementAverageValue
block = clad
variable = eutectic_thickness
outputs = csv
[]
[]
[VectorPostprocessors]
[fuel_centerline]
type = SideValueSampler
variable = 'T disp_x disp_y'
boundary = centerline
sort_by = y
outputs = csv
[]
[fuel_surface]
type = SideValueSampler
variable = 'T disp_x disp_y'
boundary = pellet_outer_radial_surface
sort_by = y
outputs = csv
[]
[clad_inner_surface]
type = SideValueSampler
variable = 'T disp_x disp_y'
boundary = clad_inside_right
sort_by = y
outputs = csv
[]
[clad_outer_surface]
type = SideValueSampler
variable = 'T disp_x disp_y'
boundary = clad_outside_right
sort_by = y
outputs = csv
[]
[]
[PerformanceMetricOutputs]
outputs = 'csv performance'
[]
[Outputs]
color = true
perf_graph = true
file_base = '${composition}'
[console]
type = Console
output_screen = true
[]
[exodus]
type = Exodus
execute_on = 'INITIAL TIMESTEP_END FINAL'
time_step_interval = 50
file_base = '${composition}_exodus'
[]
[csv]
type = CSV
execute_postprocessors_on = 'INITIAL TIMESTEP_END'
execute_vector_postprocessors_on = FINAL
file_base = '${composition}_csv'
[]
[chkfile]
type = CSV
execute_postprocessors_on = FINAL
file_base = '${composition}_chkfile'
[]
[performance]
type = CSV
hide = 'plenum_pressure plenum_temperature'
execute_postprocessors_on = FINAL
file_base = '${composition}_performance'
[]
[]
# REFERENCES
# [Bauer and Holland, 1995]
# T.H. Bauer, J.W. Holland "In-Pile Measurement of the Thermal Conductivity
# of Irradiated Metallic Fuel" Nuclear Technology Vol 110 Issue 3, 407-421,
# (1995)
# [Cabell, 1980]
# C.P. Cabell "A Summary Description of the Fast Flux Test Facility"
# Westinghouse Hanford Company HEDL-400, Hanford, Washington (1980)
# [Casagranda et al., 2020]
# A. Casagranda, S. Novascone, L. Aagesen, W. Jiang, J.H. Ke, D. Stafford,
# C. Matthews, A. Toptan, K. Gamble, J. Hales, "Summary of BISON Milestones:
# NEAMS FY-20 Report" Idaho National Laboratory INL/EXT-20-60002-Rev000,
# 1768565, Idaho Falls, Idaho (2020)
# [Dodds, 1986-1]
# N.E. Dodds, "Test design description. Volumne 1B. IFR-1 metal fuel
# irradiation (AK-181)" Argonne National Laboratory ANL-iFR-43, Argonne,
# Illinois, (1986)
# [Dodds, 1986-2]
# N.E. Dodds, "Test design description Volume 2, Part 1. IFR-1 metal fuel
# irradiation test (AK-181) element as-built data" Argonne National
# Laboratory ANL-IFR-44, Argonne, Illinois (1986)
# [Fink and Leibowitz, 1995]
# J. K. Fink and L. Leibowitz, "Thermodynamic and transport properties of
# sodium liquid and vapor", Argonne National Laboratory ANL/RE--95/2, 94649,
# Argonne, Illinois (1995)
# [Greenquist et al., 2021]
# I. Greenquist, K.M. Cunningham, J. Hu, J.J. Powers, D.C. Crawford,
# "Development of a U-19Pu-10Zr fuel performance benchmark case based on the
# IFR-1 experiment" Journal of Nuclear Materials Vol. 553, 152997 (2021)
# [Hirschhorn and Powers, 2021]
# J. Hirschhorn, J. Powers "Assessment of the BISON Metallic Fuel
# Performance Models", Oak Ridge National Laboratory ORNLTM-2020/1824,
# 1763469, Oak Ridge, Tennessee (2021)
# [Hobbs and Charboneau, 2020]
# I.M. Hobbs, J.A. Charboneau "Compressibility of gas mixtures pertaining to
# nuclear fuel rods" Journal of Physics Comminications Vol. 4, Iss. 9,
# 095008 (2020)
# [Hofman et al., 1989]
# G. L. Hofman, M. C. Billone, J. F. Koenig, J. M. Kramer, J. D. B. Lambert,
# L. Leibowitz, Y. Orechwa, D. R. Pedersen, D. L. Porter, H. Tsai, A. E.
# Wright, "Metallic Fuels Handbook", Argonne National Laboratory ANL-NSE-3,
# Argonne, Illinois (1989)
# [Janney, 2018]
# Dawn E. Janney, "Metallic Fuels Handbook, Part 1: Alloys Based on U-Zr,
# Pu-Zr, U-Pu, or U-Pu-Zr, Including Those with Minor Actinides (Np, Am,
# Cm), Rare-earth Elements (La, Ce, Pr, Nd, Gd), and Y", Idaho National
# Laboratory INL/EXT-15-36520, Idaho Falls, Idaho (2018)
# [Pahl et al., 1990]
# R.G. Pahl, D.L. Porter, C.E. Lahm, G.L. Hofman "Experimental studies of
# U-Pu-Zr fast reactor fuel pins in the Experimental Breeder Reactor-II"
# Metallurgic Transactions A Vol 21A, 1863-1870, (1990)
# [Porter and Tsai, 2011]
# D. L. Porter and H. Tsai, "Full-Length Metallic Fast Reactor Fuel Pin Test
# in FFTF (IFR-1)"", Idaho National Laboratory INL/LTD-11-21062, Idaho
# Falls, Idaho (2011)
# [Shultis and Faw, 2008]
# J.K. Shultis, R.E. Faw "Fundamentals of Nuclear Science and Engineering
# Second Edition" CRC Press, Boca Raton, Florida (2008)
# [Tsai et al., 1986]
# H. Tsai, L.A. Neimark, M.C. Billone, R.M. Fryer, J.F. Koenig, W.K. Lehto,
# D.J. Malloy, "Test Design Description (TDD). Volume 1A. Design description
# and safety analysis for IFR-1 metal fuels irradiation test in FFTF"
# Argonne National Laboratory ANL-IFR-33, Argonne, Illinois (1986)
(assessment/metallic_fuel/EBRII/X430/analysis/template.i)
# TEMPLATE FILE
# This is not an input file. It is a template used to populate the input files.
# Changes made to this file will be applied to all 25 X430 input files.
# Values used for individual pins are stored in pin_inputs.csv. Input files are
# generated using the Python script generate_input_files.py.
# X430 ASSESSMENT CASE
# BISON recreation of the 52-pin X430 experiment series, which was irradiated in
# EBR-II from 1987-88 to a peak burnup of about 10 at%. The subassembly
# contained 37 pins and was irradiated in three experiments: X430, X430A, and
# X430B. After each experiment, pins were removed, examined, replaced as
# necessary, and the subassembly was reconstructed. BISON simulations were
# developed for 25 of the pins, of which 2 are
# assessments. Legacy calculations and PIE measurements are available for all 25
# pins. Units are in standard SI: J, K, kg, m, Pa, s.
# For a more complete description of the experiments, see [Hayes et al., 1994].
# For a more complete description of the development and results of this
# assessment, see [Greenquist and Powers, 2021].
# This file simulates pin %{pin} with a composition of %{composition}.
[GlobalParams]
dim = 2
order = SECOND
family = LAGRANGE
elem_type = QUAD8
energy_per_fission = 3.2e-11 # [Shultis and Faw, 2008]
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
temperature = T
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = ref
extra_tag_vectors = ref
[]
[Mesh]
coord_type = RZ
# Mesh includes a fuel slug and cladding. All dimensions are in meters. See
# [Hayes et al., 1994] and [Greenquist and Powers, 2021] for more complete
# descriptions.
type = MeshGeneratorMesh
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
# build cladding
[bottom_plug]
type = GeneratedMeshGenerator
xmin = 0.0
xmax = 0.0032786
nx = 5
ymin = 0.0
ymax = 0.015
ny = 4
[]
[bottom_corner]
type = GeneratedMeshGenerator
xmin = 0.0032786
xmax = 0.003685
nx = 8
ymin = 0.0
ymax = 0.015
ny = 4
[]
[bottom_corner_rename_side]
type = SideSetsFromNormalsGenerator
input = bottom_corner
normals = '0 1 0'
new_boundary = new_side
[]
[combine_bottom_and_bottom_corner]
type = StitchedMeshGenerator
inputs = 'bottom_plug bottom_corner_rename_side'
stitch_boundaries_pairs = 'right left'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
[cladding_wall]
type = GeneratedMeshGenerator
xmin = 0.0032786
xmax = 0.003685
nx = 8
ymin = 0.015
ymax = 0.72565
ny = 120
[]
[cladding_wall_rename_side]
type = SideSetsFromNormalsGenerator
input = cladding_wall
normals = '0 1 0'
new_boundary = new_side
[]
[combine_bottom_and_wall]
type = StitchedMeshGenerator
inputs = 'combine_bottom_and_bottom_corner cladding_wall_rename_side'
stitch_boundaries_pairs = '4 bottom'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
[top_corner]
type = GeneratedMeshGenerator
xmin = 0.0032786
xmax = 0.003685
nx = 8
ymin = 0.72565
ymax = 0.74065
ny = 4
[]
[top_corner_rename_side]
type = SideSetsFromNormalsGenerator
input = top_corner
normals = '-1 0 0'
new_boundary = new_side
[]
[combine_wall_and_top_corner]
type = StitchedMeshGenerator
inputs = 'combine_bottom_and_wall top_corner_rename_side'
stitch_boundaries_pairs = '4 bottom'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
[top_plug]
type = GeneratedMeshGenerator
xmin = 0.0
xmax = 0.0032786
nx = 5
ymin = 0.72565
ymax = 0.74065
ny = 4
[]
[cladding_all]
type = StitchedMeshGenerator
inputs = 'combine_wall_and_top_corner top_plug'
stitch_boundaries_pairs = '4 right'
clear_stitched_boundary_ids = true
prevent_boundary_ids_overlap = false
[]
# build fuel
[fuel_slug]
type = GeneratedMeshGenerator
xmin = 0.0
xmax = %{fuel_r}
nx = 5
ymin = 0.019
ymax = %{fuel_top}
ny = 250
[]
# combine and name subdomains
[combine_fuel_cladding]
type = CombinerGenerator
inputs = 'cladding_all fuel_slug'
[]
[name_cladding]
type = SubdomainBoundingBoxGenerator
input = combine_fuel_cladding
bottom_left = '0.0 0.0 0.0'
top_right = '0.003685 0.74065 0.0'
location = INSIDE
block_id = 0
block_name = clad
[]
[name_fuel]
type = SubdomainBoundingBoxGenerator
input = name_cladding
bottom_left = '0.0 0.019 0.0'
top_right = '%{fuel_r} %{fuel_top} 0.0'
location = INSIDE
block_id = 1
block_name = pellet
[]
# name boundaries
[name_centerline]
type = SideSetsFromNormalsGenerator
input = name_fuel
normals = '-1 0 0'
new_boundary = centerline
replace = true
[]
[name_slug_outer_surface]
type = SideSetsFromNormalsGenerator
input = name_centerline
normals = '1 0 0'
new_boundary = pellet_outer_radial_surface
replace = true
[]
[name_slug_ends]
type = SideSetsFromPointsGenerator
input = name_slug_outer_surface
points = '0.50e-3 0.019 0.0
0.50e-3 %{fuel_top} 0.0'
new_boundary = 'bottom_of_bottom_pellet top_of_top_pellet'
replace = true
[]
[name_cladding_inside]
type = SideSetsFromPointsGenerator
input = name_slug_ends
points = '0.50e-3 0.015 0.0
0.0032786 0.36 0.0
0.50e-3 0.72565 0.0'
new_boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
replace = true
[]
[name_cladding_outer_surface]
type = SideSetsFromPointsGenerator
input = name_cladding_inside
points = '0.003685 0.36 0.0
0.50e-3 0.0 0.0
0.50e-3 0.74065 0.0'
new_boundary = 'clad_outside_right clad_outside_bottom clad_outside_top'
replace = true
[]
[]
[Variables]
[T]
initial_condition = 298
[]
[]
[AuxVariables]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[fuel_clad_gap_width]
order = FIRST
family = LAGRANGE
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[fuel_volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[clad_hoop_stress]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[clad_hoop_creep_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[clad_hoop_elastic_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[clad_hoop_total_strain]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[local_power]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[T_coolant]
order = CONSTANT
family = MONOMIAL
[]
[pin_lhr]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[eutectic_thickness]
block = clad
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[assembly_lhr_avg_function]
# Subassembly average LHR as a function of time. x: time (s), y: average
# LHGR (W/m). See [Greenquist and Powers, 2021].
type = PiecewiseLinear
x = ' 0 3600 8203212 8206812 13814423 13818023 14428975 14432575
21312419 21316019 25596874 25600474 26261755 26265355 32714598 32718198
32721798 32725398 32728998 32896765 32900365 39574695 39578295 42194062
42197662 43820808 43824408 43895709 43899309 44401212 44404812 47385472
47389072 48198548 48202148 48205748 48209348 48212948 52079977 52083577
53874489 53878089 62125235 62128835 62256058 62259658 62620357 62623957
64516928 64520528 64766586 64770186 67535546 67539146 72155534 72159134
72185697 72189297 76833647 76837247 77340548 77344148 77738400 77742000
80444447 80448047 80451647 80455247'
y = ' 0.0 44225.3 44225.3 43106.1 43106.1 41403.6 41403.6 41119.9
41119.9 38881.4 38881.4 38353.3 38353.3 39472.5 39472.5 0.0
0.0 0.0 33490.2 33490.2 36863.6 36863.6 37123.7 37123.7
32717.8 32717.8 38534.6 38534.6 38432.1 38432.1 36784.8 36784.8
36036.0 36036.0 0.0 0.0 0.0 35153.3 35153.3 35153.3
35153.3 35271.5 35271.5 33663.6 33663.6 34459.7 34459.7 34640.9
34640.9 34428.1 34428.1 34026.2 34026.2 33624.2 33624.2 33624.2
33624.2 33718.8 33718.8 34057.7 34057.7 34057.7 34057.7 34215.3
34215.3 0.0 0.0 0.0'
[]
[radial_peaking_factor_function]
# Adjusts the pin's average LHR based on its location in the subassembly.
# x: time [s], y: relative LHR change. See [Greenquist and Powers, 2021].
type = PiecewiseLinear
x = ' 0 32718198
32725398 48202148
48209348 80455247'
y = '%{rad_LHR_X430} %{rad_LHR_X430}
%{rad_LHR_X430a} %{rad_LHR_X430a}
%{rad_LHR_X430b} %{rad_LHR_X430b}'
[]
[lhr_peaking_factor_function]
# Axial variation from the average LHR. x: axial position (m), y: time (s),
# z: peaking factor. See [Hayes et al., 1994] and
# [Greenquist and Powers, 2021].
#
type = PiecewiseBilinear
xaxis = 1
yaxis = 0
y = '0 32725398 48209348 80455247'
x = '0.018 0.019 %{z01} %{z02} %{z03} %{z04}
%{z05} %{z06} %{z07} %{z08} %{z09}
%{fuel_top} %{z11}'
z = '0.0000 %{pX430_00} %{pX430_01} %{pX430_02} %{pX430_03} %{pX430_04}
%{pX430_05} %{pX430_06} %{pX430_07} %{pX430_08} %{pX430_09}
%{pX430_10} 0.0000
0.0000 %{pX430a_00} %{pX430a_01} %{pX430a_02} %{pX430a_03} %{pX430a_04}
%{pX430a_05} %{pX430a_06} %{pX430a_07} %{pX430a_08} %{pX430a_09}
%{pX430a_10} 0.0000
0.0000 %{pX430b_00} %{pX430b_01} %{pX430b_02} %{pX430b_03} %{pX430b_04}
%{pX430b_05} %{pX430b_06} %{pX430b_07} %{pX430b_08} %{pX430b_09}
%{pX430b_10} 0.0000
0.0000 %{pEOL_00} %{pEOL_01} %{pEOL_02} %{pEOL_03} %{pEOL_04}
%{pEOL_05} %{pEOL_06} %{pEOL_07} %{pEOL_08} %{pEOL_09}
%{pEOL_10} 0.0000'
[]
[coolant_flux_function]
# Subassembly coolant mass flux. x: time (s), y: flux (kg m^-2 s^-1). See
# [Hayes et al., 1994] and [Greenquist and Powers, 2021].
type = PiecewiseLinear
x = ' 0 3600 8203212 8206812 13814423 13818023 14428975 14432575
21312419 21316019 25596874 25600474 26261755 26265355 32714598 32718198
32721798 32725398 32728998 32896765 32900365 39574695 39578295 42194062
42197662 43820808 43824408 43895709 43899309 44401212 44404812 47385472
47389072 48198548 48202148 48205748 48209348 48212948 52079977 52083577
53874489 53878089 62125235 62128835 62256058 62259658 62620357 62623957
64516928 64520528 64766586 64770186 67535546 67539146 72155534 72159134
72185697 72189297 76833647 76837247 77340548 77344148 77738400 77742000
80444447 80448047 80451647 80455247'
y = ' 2699.1 2699.1 2699.1 2724.0 2724.0 2697.2 2697.2 2781.0
2781.0 2721.1 2721.1 2696.9 2696.9 2785.4 2785.4 2785.4
2785.4 2785.4 2793.7 2793.7 2803.5 2803.5 2814.2 2814.2
2799.6 2799.6 2840.1 2840.1 2839.6 2839.6 2873.7 2873.7
2855.7 2855.7 2855.7 2855.7 2855.7 2826.4 2826.4 2826.4
2826.4 2788.4 2788.4 2780.6 2780.6 2771.8 2771.8 2781.5
2781.5 2817.1 2817.1 2807.4 2807.4 2777.1 2777.1 2777.1
2777.1 2746.4 2746.4 2765.9 2765.9 2765.9 2765.9 2777.1
2777.1 2777.1 2777.1 2777.1'
[]
[pin_lhr_avg_function]
type = CompositeFunction
functions = 'assembly_lhr_avg_function radial_peaking_factor_function'
[]
[pin_lhr_function]
type = CompositeFunction
functions = 'pin_lhr_avg_function lhr_peaking_factor_function'
[]
[coolant_pressure_function]
type = ConstantFunction
value = 347702.6 # [Snyder, 1988]
[]
[T_coolant_in_function]
# Sodium coolant inlet temperature. x: time (s), y: temperature (K). See
# [Hayes et al., 1994].
type = PiecewiseLinear
x = ' 0 3600 32718198 32721798 32725398 32728998 48202148 48205748
48209348 48212948 80448047 80451647 80455247'
y = ' 298.00 644.15 644.15 305.00 305.00 644.15 644.15 305.00
305.00 644.15 644.15 305.00 305.00'
[]
[sodium_volume_function]
# the initial sodium height is assumed to be equal to the initial fuel
# height and sodium infiltration is ignored.
type = ParsedFunction
symbol_names = 'pellet_outer_radius cladding_gap_width pellet_height'
symbol_values = '%{fuel_r} %{gap_width} %{fuel_h}'
expression = 'pi * ((pellet_outer_radius + cladding_gap_width)^2 -
pellet_outer_radius^2) * pellet_height'
[]
[gas_volume_function]
type = ParsedFunction
symbol_names = 'clad_internal_volume fuel_volume sodium_volume'
symbol_values = 'clad_internal_volume fuel_volume sodium_volume'
expression = 'abs(clad_internal_volume) - abs(fuel_volume) - abs(sodium_volume)'
[]
[sodium_conductivity_function]
# Thermal conductivity (W m^-1 K^-1) of the pin gap sodium according to
# [Fink and Leibowitz, 1995]. t: temperature (K).
type = ParsedFunction
symbol_names = 'A B C D'
symbol_values = '124.67 -0.11381 5.5226e-5 -1.1842e-8'
expression = 'A + B * t + C * t^2 + D * t^3'
[]
[creep_timestep_min_function]
type = ParsedFunction
symbol_names = 'creep_timestep_fuel creep_timestep_clad'
symbol_values = 'creep_timestep_fuel creep_timestep_clad'
expression = 'min(creep_timestep_fuel, creep_timestep_clad)'
[]
[fuel_axial_elongation_max_pct_function]
type = ParsedFunction
symbol_names = 'fuel_axial_elongation_min fuel_axial_elongation_max pellet_height'
symbol_values = 'fuel_axial_elongation_min fuel_axial_elongation_max %{fuel_h}'
expression = '(fuel_axial_elongation_max - fuel_axial_elongation_min) /
pellet_height * 100'
[]
[fuel_radial_dilation_max_pct_function]
type = ParsedFunction
symbol_names = 'fuel_radial_dilation_max pellet_outer_radius'
symbol_values = 'fuel_radial_dilation_max %{fuel_r}'
expression = 'fuel_radial_dilation_max / pellet_outer_radius * 100'
[]
[clad_axial_elongation_max_pct_function]
type = ParsedFunction
symbol_names = 'clad_axial_elongation_max plug_height cladding_total_height'
symbol_values = 'clad_axial_elongation_max 0.015 0.74065'
expression = 'clad_axial_elongation_max /
(plug_height + cladding_total_height) * 100'
[]
[clad_radial_dilation_max_pct_function]
type = ParsedFunction
symbol_names = 'clad_radial_dilation_max cladding_outer_radius'
symbol_values = 'clad_radial_dilation_max 0.003685'
expression = 'clad_radial_dilation_max / cladding_outer_radius * 100'
[]
[plenum_compressibility_function]
# Accounts for nonideality in fission gas [Hobbs and Charboneau, 2020]
type = ParsedFunction
symbol_names = 'plenum_pressure A B C'
symbol_values = 'plenum_pressure 1.002 -3.4e-8 -1.9e-15'
expression = 'A + B * plenum_pressure + C * plenum_pressure^2'
[]
[compressibility_times_temperature_function]
type = ParsedFunction
symbol_names = 'plenum_temperature plenum_compressibility'
symbol_values = 'plenum_temperature plenum_compressibility'
expression = 'plenum_temperature * plenum_compressibility'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy
creep_strain_zz elastic_strain_xx elastic_strain_yy
elastic_strain_zz strain_xx strain_yy strain_zz'
[fuel_mechanics]
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_gaseous_strain
fuel_solid_strain'
extra_vector_tags = ref
[]
[clad_mechanics]
block = clad
eigenstrain_names = 'clad_thermal_strain clad_gaseous_strain'
extra_vector_tags = ref
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = ref
[]
[heat_conduction_time_derivative]
type = HeatConductionTimeDerivative
variable = T
extra_vector_tags = ref
[]
[heat_conduction]
type = HeatConduction
variable = T
extra_vector_tags = ref
[]
[heat_source]
type = FissionRateHeatSource
block = pellet
variable = T
fission_rate = fission_rate
extra_vector_tags = ref
[]
[]
[AuxKernels]
[gap_conductance]
type = MaterialRealAux
variable = gap_conductance
property = gap_conductance
boundary = pellet_outer_radial_surface
[]
[fuel_clad_gap_width]
type = ParsedAux
variable = fuel_clad_gap_width
coupled_variables = penetration
expression = '-penetration'
[]
[failed_element]
type = MaterialRealAux
variable = element_failed
property = failed
boundary = clad_outside_right
[]
[fuel_volumetric_strain]
type = RankTwoScalarAux
block = pellet
variable = fuel_volumetric_strain
rank_two_tensor = total_strain
scalar_type = VolumetricStrain
[]
[clad_hoop_stress]
type = RankTwoAux
block = clad
variable = clad_hoop_stress
rank_two_tensor = stress
index_i = 2
index_j = 2
[]
[clad_hoop_creep_strain]
type = RankTwoAux
block = clad
variable = clad_hoop_creep_strain
rank_two_tensor = creep_strain
index_i = 2
index_j = 2
[]
[clad_hoop_elastic_strain]
type = RankTwoAux
block = clad
variable = clad_hoop_elastic_strain
rank_two_tensor = elastic_strain
index_i = 2
index_j = 2
[]
[clad_hoop_total_strain]
type = RankTwoAux
block = clad
variable = clad_hoop_total_strain
rank_two_tensor = total_strain
index_i = 2
index_j = 2
[]
[local_power]
type = FunctionAux
block = pellet
variable = local_power
function = lhr_peaking_factor_function
[]
[T_coolant]
type = MaterialRealAux
variable = T_coolant
property = coolant_temperature
boundary = clad_outside_right
[]
[pin_lhr]
type = FunctionAux
block = pellet
variable = pin_lhr
function = pin_lhr_function
[]
[eutectic_thickness]
type = DiffusionalEutecticThicknessFCCI
block = clad
variable = eutectic_thickness
temperature = T
boundary = clad_inside_right
execute_on = TIMESTEP_END
[]
[]
[Contact]
[frictionless_fuel_clad_mechanical]
primary = clad_inside_right
secondary = pellet_outer_radial_surface
model = frictionless
formulation = kinematic
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = T
primary = clad_inside_right
secondary = pellet_outer_radial_surface
gap_geometry_type = CYLINDER
gap_conductivity_function = sodium_conductivity_function
gap_conductivity_function_variable = T
quadrature = true
min_gap = %{gap_width} # Initial gap thickness according to dimensions.
tangential_tolerance = 1e-4
[]
[]
[BCs]
[fix_disp_x_all]
type = DirichletBC
variable = disp_x
value = 0.0
boundary = centerline
[]
[fix_disp_y_all]
type = DirichletBC
variable = disp_y
value = 0.0
boundary = 'clad_outside_bottom bottom_of_bottom_pellet'
[]
[Pressure]
[coolant_pressure]
function = coolant_pressure_function
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
[]
[]
[PlenumPressure]
[plenum_pressure]
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
startup_time = 0
initial_pressure = 84000 # [Hayes et al., 1994]
volume = gas_volume
material_input = fission_gas_released
R = 8.3143
temperature = plenum_temperature
output = plenum_pressure
[]
[]
[]
[PlenumTemperature]
[plenum_temperature]
temperature = T
boundary = 'bottom_of_bottom_pellet pellet_outer_radial_surface
top_of_top_pellet clad_inside_bottom clad_inside_right
clad_inside_top'
inner_surfaces = 'bottom_of_bottom_pellet pellet_outer_radial_surface
top_of_top_pellet'
outer_surfaces = 'clad_inside_bottom clad_inside_right clad_inside_top'
[]
[]
[CoolantChannel]
[convective_clad_surface]
variable = T
inlet_temperature = T_coolant_in_function
inlet_pressure = coolant_pressure_function
inlet_massflux = coolant_flux_function
coolant_material = sodium
rod_diameter = 0.00737 # [Hayes et al., 1994]
rod_pitch = %{pin_pitch}
linear_heat_rate = pin_lhr_avg_function
axial_power_profile = lhr_peaking_factor_function
subchannel_geometry = triangular
boundary = 'clad_outside_bottom clad_outside_right clad_outside_top'
[]
[]
[Materials]
###### FUEL ######
[fuel_fission_rate]
type = UPuZrFissionRate
block = pellet
rod_linear_power = pin_lhr_avg_function
axial_power_profile = lhr_peaking_factor_function
pellet_radius = %{fuel_r}
initial_X_Zr = %{x_Zr}
X_Zr = %{x_Zr}
outputs = exodus
output_properties = fission_rate
[]
[fuel_burnup]
type = UPuZrBurnup
block = pellet
density = %{fuel_density}
initial_X_Pu = %{x_Pu}
initial_X_Zr = %{x_Zr}
outputs = exodus
output_properties = burnup
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = %{fuel_density}
[]
[fuel_sodium_logging]
type = UPuZrSodiumLogging
block = pellet
porosity = porosity
sodium_infiltration_fraction = %{na_infiltration}
outputs = exodus
output_properties = sodium_logged_porosity
[]
[fuel_thermal_properties]
type = UPuZrThermal
block = pellet
X_Pu = %{x_Pu}
X_Zr = %{x_Zr}
spheat_model = savage
thcond_model = lanl
porosity_model = logged
porosity = porosity
sodium_logged_porosity = sodium_logged_porosity
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
block = pellet
X_Pu = %{x_Pu}
X_Zr = %{x_Zr}
porosity = porosity
[]
[fuel_creep]
type = UPuZrCreepUpdate
block = pellet
porosity = porosity
max_inelastic_increment = 3e-3
effective_inelastic_strain_name = fuel_effective_creep_strain
[]
[fuel_gaseous_swelling]
type = UPuZrGaseousEigenstrain
block = pellet
fission_rate = fission_rate
anisotropic_factor = 0.5
bubble_number_density = 5e17
interconnection_initiating_porosity = %{fgr_initiating_porosity}
interconnection_terminating_porosity = %{fgr_terminating_porosity}
eigenstrain_name = fuel_gaseous_strain
outputs = exodus
output_properties = 'gas_swelling porosity interconnectivity'
[]
[fuel_solid_swelling]
type = BurnupDependentEigenstrain
block = pellet
eigenstrain_name = fuel_solid_strain
swelling_name = solid_swelling
swelling_factor = 0 # Solid swelling is negligible below 10% burnup
outputs = exodus
output_properties = solid_swelling
[]
[fuel_fission_gas_release]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
porosity = porosity
critical_porosity = %{critical_porosity}
fractional_fgr_initial = %{fgr_initial}
fractional_fgr_post = %{fgr_post}
[]
[fuel_thermal_expansion]
type = UPuZrThermalExpansionEigenstrain
block = pellet
stress_free_temperature = 298
eigenstrain_name = fuel_thermal_strain
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
block = pellet
inelastic_models = fuel_creep
[]
###### CLADDING ######
[fast_neutron_flux]
type = UPuZrFastNeutronFlux
pellet_radius = %{fuel_r}
axial_power_profile = lhr_peaking_factor_function
rod_linear_power = pin_lhr_avg_function
initial_density = %{fuel_density}
initial_X_Pu = %{x_Pu}
initial_X_Zr = %{x_Zr}
enrichment_U235 = %{enrichment_U}
enrichment_Pu240 = %{enrichment_Pu}
calculate_fluence = true
outputs = exodus
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7771
[]
[clad_thermal_properties]
type = HT9Thermal
block = clad
[]
[clad_gaseous_swelling]
type = HT9VolumetricSwellingEigenstrain
block = clad
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
eigenstrain_name = clad_gaseous_strain
[]
[clad_thermal_expansion]
type = HT9ThermalExpansionEigenstrain
block = clad
eigenstrain_name = clad_thermal_strain
stress_free_temperature = 298
[]
[clad_elasticity_tensor]
type = HT9ElasticityTensor
block = clad
[]
[clad_creep]
type = HT9CreepUpdate
block = clad
first_thermal_scalar = 1
second_thermal_scalar = 1
irradiation_scalar = 1
max_inelastic_increment = 3e-3 # 1e-2
effective_inelastic_strain_name = clad_effective_creep_strain
[]
[clad_failure]
type = HT9FailureClad
method = cdf_long
hoop_stress = stress_zz
boundary = clad_outside_right
outputs = exodus
output_properties = cdf_failure
[]
[inner_clad_wastage]
type = MetallicFuelWastage
block = clad
method = flux_ht9
burnup = 0 # not used but must be specified
outputs = exodus
output_properties = wastage_thickness
[]
[outer_clad_wastage]
type = MetallicFuelCoolantWastage
block = clad
clad_material = HT9
use_effective_method = true
outputs = exodus
[]
[clad_wastage_fraction]
type = MetallicFuelWastageDamage
block = clad
wastage_thickness = wastage_thickness
pellet_length = %{fuel_h}
pellet_y_start = 0.019
cladding_thickness = 0.0004064
outputs = exodus
[]
[clad_damage_fraction]
type = ScalarMaterialDamage
block = clad
damage_index = thinning_fraction
outputs = exodus
[]
[clad_elastic_stress]
type = ComputeMultipleInelasticStress
block = clad
inelastic_models = clad_creep
[]
[]
[Dampers]
[T_damper]
type = MaxIncrement
variable = T
max_increment = 25
[]
[disp_x_damper]
type = MaxIncrement
variable = disp_x
max_increment = 3.00E-04
[]
[disp_y_damper]
type = MaxIncrement
variable = disp_y
max_increment = 3.00E-04
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = PJFNK
automatic_scaling = true
compute_scaling_once = false
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package
-ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist
51'
line_search = NONE
l_max_its = 30
l_tol = 1e-3
nl_max_its = 30
nl_rel_tol = 1e-4
nl_abs_tol = 5e-7
start_time = %{t_start}
end_time = %{t_end}
dtmin = 1e-2
dtmax = 1e6
verbose = true
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[TimeStepper]
type = IterationAdaptiveDT
dt = 1
optimal_iterations = 10
iteration_window = 4
growth_factor = 1.25
cutback_factor = 0.512
linear_iteration_ratio = 100
force_step_every_function_point = true
timestep_limiting_function = assembly_lhr_avg_function
timestep_limiting_postprocessor = creep_timestep_min
[]
[]
[Postprocessors]
###### POWER ######
[fission_rate_density_avg]
type = ElementAverageValue
block = pellet
variable = fission_rate
outputs = csv
[]
[fast_neutron_fluence_avg]
type = ElementAverageValue
variable = fast_neutron_fluence
outputs = 'csv chkfile'
[]
[fast_neutron_fluence_max]
type = ElementExtremeValue
variable = fast_neutron_fluence
value_type = max
outputs = 'csv chkfile'
[]
[pin_hr_tot]
type = ElementIntegralPower
block = pellet
variable = T # required but not actually used
use_material_fission_rate = true
fission_rate_material = fission_rate
outputs = csv
[]
[pin_lhr_avg]
type = FunctionValuePostprocessor
function = pin_lhr_avg_function
outputs = csv
[]
###### HEAT TRANSFER ######
[radial_heat_flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = T
boundary = pellet_outer_radial_surface
diffusivity = thermal_conductivity
outputs = csv
[]
[radial_heat_flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = T
boundary = clad_outside_right
diffusivity = thermal_conductivity
outputs = csv
[]
###### FISSION GAS ###### (needed for simulation to run)
[fission_gas_produced]
type = ElementIntegralMaterialProperty
block = pellet
mat_prop = fis_gas_prod
outputs = 'csv chkfile'
[]
[fission_gas_released]
type = ElementIntegralMaterialProperty
block = pellet
mat_prop = fis_gas_rel
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[fission_gas_released_pct]
type = FGRPercent
fission_gas_generated = fission_gas_produced
fission_gas_released = fission_gas_released
outputs = 'console csv chkfile'
[]
[clad_internal_volume]
type = InternalVolume
boundary = 'clad_inside_bottom clad_inside_right clad_inside_top'
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[fuel_volume]
type = InternalVolume
boundary = 'bottom_of_bottom_pellet pellet_outer_radial_surface
top_of_top_pellet'
scale_factor = -1 # makes the fuel volume positive
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[sodium_volume]
type = FunctionValuePostprocessor
function = sodium_volume_function
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[gas_volume]
type = FunctionValuePostprocessor
function = gas_volume_function
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[plenum_compressibility]
type = FunctionValuePostprocessor
function = plenum_compressibility_function
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
[compressibility_times_temperature]
type = FunctionValuePostprocessor
function = compressibility_times_temperature_function
execute_on = 'INITIAL LINEAR TIMESTEP_END'
outputs = csv
[]
###### BURNUP ######
[burnup_max]
type = ElementExtremeValue
block = pellet
variable = burnup
value_type = max
outputs = csv
[]
[burnup_max_pct]
type = LinearCombinationPostprocessor
pp_names = burnup_max
pp_coefs = 100
outputs = 'csv chkfile'
[]
[burnup_avg]
type = ElementAverageValue
block = pellet
variable = burnup
outputs = csv
[]
[burnup_avg_pct]
type = LinearCombinationPostprocessor
pp_names = burnup_avg
pp_coefs = 100
outputs = 'console csv chkfile'
[]
###### FUEL TEMPERATURE ######
[fuel_T_max]
type = ElementExtremeValue
block = pellet
variable = T
value_type = max
outputs = csv
[]
[fuel_T_max_peak]
type = TimeExtremeValue
postprocessor = fuel_T_max
value_type = max
outputs = 'csv chkfile'
[]
[fuel_T_surface_max]
type = NodalExtremeValue
boundary = pellet_outer_radial_surface
variable = T
value_type = max
outputs = csv
[]
[fuel_T_surface_max_peak]
type = TimeExtremeValue
postprocessor = fuel_T_surface_max
value_type = max
outputs = 'csv chkfile'
[]
###### CLADDING TEMPERATURE ######
[clad_T_max]
type = ElementExtremeValue
block = clad
variable = T
value_type = max
outputs = csv
[]
[clad_T_max_peak]
type = TimeExtremeValue
postprocessor = clad_T_max
value_type = max
outputs = csv
[]
[clad_T_inner_surface_max]
type = NodalExtremeValue
boundary = clad_inside_right
variable = T
value_type = max
outputs = csv
[]
[clad_T_inner_surface_max_peak]
type = TimeExtremeValue
postprocessor = clad_T_inner_surface_max
value_type = max
outputs = 'csv chkfile'
[]
[clad_T_outer_surface_max]
type = NodalExtremeValue
boundary = clad_outside_right
variable = T
value_type = max
outputs = csv
[]
[clad_T_outer_surface_max_peak]
type = TimeExtremeValue
postprocessor = clad_T_outer_surface_max
value_type = max
outputs = 'csv chkfile'
[]
###### COOLANT PARAMETERS ######
[T_coolant_in]
type = FunctionValuePostprocessor
function = T_coolant_in_function
outputs = csv
[]
[T_coolant_out]
type = ElementExtremeValue
block = clad
variable = T_coolant
value_type = max
outputs = csv
[]
[coolant_flux]
type = FunctionValuePostprocessor
function = coolant_flux_function
outputs = csv
[]
###### FUEL DEFORMATION ######
[fuel_axial_elongation_min]
type = NodalExtremeValue
block = pellet
variable = disp_y
value_type = min
outputs = csv
[]
[fuel_axial_elongation_max]
type = NodalExtremeValue
block = pellet
variable = disp_y
value_type = max
outputs = csv
[]
[fuel_axial_elongation_max_pct]
type = FunctionValuePostprocessor
function = fuel_axial_elongation_max_pct_function
outputs = 'console csv chkfile'
[]
[fuel_radial_dilation_max]
type = NodalExtremeValue
variable = disp_x
boundary = pellet_outer_radial_surface
value_type = max
outputs = csv
[]
[fuel_radial_dilation_max_pct]
type = FunctionValuePostprocessor
function = fuel_radial_dilation_max_pct_function
outputs = csv
[]
###### CLADDING DEFORMATION ######
[clad_axial_elongation_max]
type = NodalExtremeValue
block = clad
variable = disp_y
value_type = max
outputs = csv
[]
[clad_axial_elongation_max_pct]
type = FunctionValuePostprocessor
function = clad_axial_elongation_max_pct_function
outputs = 'csv chkfile'
[]
[clad_radial_dilation_max]
type = NodalExtremeValue
variable = disp_x
boundary = clad_outside_right
value_type = max
outputs = csv
[]
[clad_radial_dilation_max_pct]
type = FunctionValuePostprocessor
function = clad_radial_dilation_max_pct_function
outputs = 'console csv chkfile'
[]
###### GAP DEFORMATION AND MECHANICS ######
[gap_width_min]
type = NodalExtremeValue
variable = fuel_clad_gap_width
boundary = pellet_outer_radial_surface
value_type = min
outputs = csv
[]
[gap_width_max]
type = NodalExtremeValue
variable = fuel_clad_gap_width
boundary = pellet_outer_radial_surface
value_type = max
outputs = csv
[]
[gap_width_avg]
type = SideAverageValue
variable = fuel_clad_gap_width
boundary = pellet_outer_radial_surface
outputs = csv
[]
[contact_pressure_max]
type = NodalExtremeValue
variable = contact_pressure
boundary = pellet_outer_radial_surface
value_type = max
outputs = csv
[]
###### FUEL MECHANICS ######
[fuel_hydrostatic_stress_min]
type = ElementExtremeValue
block = pellet
variable = hydrostatic_stress
value_type = min
outputs = csv
[]
[fuel_hydrostatic_stress_max]
type = ElementExtremeValue
block = pellet
variable = hydrostatic_stress
value_type = max
outputs = csv
[]
[fuel_hydrostatic_stress_avg]
type = ElementAverageValue
block = pellet
variable = hydrostatic_stress
outputs = csv
[]
[fuel_volumetric_strain_avg]
type = ElementAverageValue
block = pellet
variable = fuel_volumetric_strain
outputs = 'csv chkfile'
[]
###### CLADDING MECHANICS ######
[clad_hoop_stress_max]
type = ElementExtremeValue
block = clad
variable = clad_hoop_stress
value_type = max
outputs = csv
[]
[clad_hoop_creep_strain_max]
type = ElementExtremeValue
block = clad
variable = clad_hoop_creep_strain
value_type = max
outputs = 'csv chkfile'
[]
[clad_hoop_elastic_strain_max]
type = ElementExtremeValue
block = clad
variable = clad_hoop_elastic_strain
value_type = max
outputs = 'csv chkfile'
[]
[clad_hoop_total_strain_max]
type = ElementExtremeValue
block = clad
variable = clad_hoop_total_strain
value_type = max
outputs = 'csv chkfile'
[]
[cdf_max]
type = ElementExtremeValue
variable = cdf_failure
value_type = max
outputs = 'console csv'
[]
###### PERFORMANCE ######
[creep_timestep_fuel]
type = MaterialTimeStepPostprocessor
block = pellet
outputs = csv
[]
[creep_timestep_clad]
type = MaterialTimeStepPostprocessor
block = clad
outputs = csv
[]
[creep_timestep_min]
type = FunctionValuePostprocessor
function = creep_timestep_min_function
outputs = csv
[]
###### SWELLING ######
[solid_swelling_avg]
type = ElementAverageValue
block = pellet
variable = solid_swelling
outputs = 'csv chkfile'
[]
[gas_swelling_avg]
type = ElementAverageValue
block = pellet
variable = gas_swelling
outputs = 'csv chkfile'
[]
[porosity_avg]
type = ElementAverageValue
block = pellet
variable = porosity
outputs = 'csv chkfile'
[]
[sodium_logged_porosity_avg]
type = ElementAverageValue
block = pellet
variable = sodium_logged_porosity
outputs = 'csv chkfile'
[]
###### CLADDING WASTAGE ######
[wastage_max]
type = ElementExtremeValue
block = clad
variable = wastage_thickness
value_type = max
outputs = 'csv chkfile'
[]
[wastage_min]
type = ElementExtremeValue
block = clad
variable = wastage_thickness
value_type = min
outputs = csv
[]
[wastage_avg]
type = ElementAverageValue
block = clad
variable = wastage_thickness
outputs = csv
[]
[eutectic_max]
type = ElementExtremeValue
block = clad
variable = eutectic_thickness
value_type = max
outputs = csv
[]
[eutectic_min]
type = ElementExtremeValue
block = clad
variable = eutectic_thickness
value_type = min
outputs = csv
[]
[eutectic_avg]
type = ElementAverageValue
block = clad
variable = eutectic_thickness
outputs = csv
[]
[]
[VectorPostprocessors]
[fuel_centerline]
type = SideValueSampler
variable = 'T disp_x disp_y'
boundary = centerline
sort_by = y
outputs = csv
[]
[fuel_surface]
type = SideValueSampler
variable = 'T disp_x disp_y'
boundary = pellet_outer_radial_surface
sort_by = y
outputs = csv
[]
[clad_inner_surface]
type = SideValueSampler
variable = 'T disp_x disp_y'
boundary = clad_inside_right
sort_by = y
outputs = csv
[]
[clad_outer_surface]
type = SideValueSampler
variable = 'T disp_x disp_y'
boundary = clad_outside_right
sort_by = y
outputs = csv
[]
[]
[PerformanceMetricOutputs]
outputs = 'csv performance'
[]
[Outputs]
color = false
perf_graph = true
[console]
type = Console
output_screen = true
[]
[exodus]
type = Exodus
execute_on = 'INITIAL TIMESTEP_END FINAL'
time_step_interval = 50
[]
[csv]
type = CSV
execute_postprocessors_on = 'INITIAL TIMESTEP_END'
execute_vector_postprocessors_on = FINAL
[]
[chkfile]
type = CSV
execute_postprocessors_on = FINAL
[]
[performance]
type = CSV
hide = 'plenum_pressure plenum_temperature'
execute_postprocessors_on = FINAL
[]
[]
# REFERENCES
# [Fink and Leibowitz, 1995]
# J. K. Fink and L. Leibowitz, "Thermodynamic and transport properties of
# sodium liquid and vapor", Argonne National Laboratory ANL/RE--95/2, 94649,
# Argonne, Illinois (1995)
# [Greenquist and Powers, 2021]
# I. Greenquist, J.J. Powers "25-Pin metallic fuel performance benchmark
# case based on the EBR-II X430 experiment series" Journal of Nuclear
# Materials Vol 556, 153211 (2021)
# [Hayes et al., 1994]
# S.L. Hayes, D.C. Crawford, R.G. Phal "Test Design and Postirradiation
# Examination of the HT9 Advanced Driver Fuel Test (X430)" Argonne National
# Laboratory ANL-IFR-225, Idaho Falls, Idaho (1994)
# [Hobbs and Charboneau, 2020]
# I.M. Hobbs, J.A. Charboneau "Compressibility of gas mixtures pertaining to
# nuclear fuel rods" Journal of Physics Comminications Vol. 4, Iss. 9,
# 095008 (2020)
# [Shultis and Faw, 2008]
# J.K. Shultis, R.E. Faw "Fundamentals of Nuclear Science and Engineering
# Second Edition" CRC Press, Boca Raton, Florida (2008)
# [Snyder, 1988]
# E. Snyder "Report of EBR-II Operations: Run 146 and 147", Argonne National
# Laboratory ANLEBR.R146 ANLEBR.R147, Idaho Falls, Idaho (1988)
(assessment/metallic_fuel/EBRII/X441/analysis/group_G/x441_1_5D_G.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X447/analysis/enhancement/x447_enh_base.i)
# Enhanced X447 analysis
# Uses advanced contact and gap conductance modeling from X441 assessment case
# Uses 0.3017 for fission gas yield, which is consistent with X423 assessment case
## Sodium logging was calculated by hand here for confirmation
## The hotpressing, or the accumulation of solid FPs (~15% at ~10% BU)
## Will consume the available porosity
gap_bottom_length = 0.31e-3
top_bot_cladding_height = 2.24e-3
# Calculations
cladding_ir = ${fparse fuel_radius + cladding_gap_width}
gas_plenum_height = ${fparse plenum_volume / pi / cladding_ir^2}
fuel_y_start = ${fparse gap_bottom_length + top_bot_cladding_height}
alpha_start = 877
alpha_end = 936
bubble_concentration = 1e15
[GlobalParams]
order = FIRST
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
alpha_transition_end = ${alpha_end}
alpha_transition_start = ${alpha_start}
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
# Pin design parameters from FIPD database
[gen]
type = FIPDRodletMeshGenerator
fipd_geom_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} / ${pin_id} _design.csv'}
gap_bottom_length = ${gap_bottom_length} # arbitrary
cladding_bottom_plug_length = ${top_bot_cladding_height} # arbitrary
cladding_top_plug_length = ${top_bot_cladding_height} # arbitrary
cladding_sidewall_radial_elements = 10
cladding_sidewall_axial_element_numbers = '2 150 150'
cladding_top_plug_radial_elements = 10
cladding_top_plug_axial_elements = 5
cladding_bottom_plug_axial_elements = 5
fuel_radial_elements = 6
fuel_axial_element_intervals = '0 1'
fuel_axial_element_numbers = '150'
use_default_cladding_sidewall_axial_element_intervals = true
elem_type = QUAD4
make_stand = true
make_cap = true
cap_axial_elements = 15
stand_axial_elements = 15
[]
[sodium_height]
type = SideSetsFromBoundingBoxGenerator
input = gen
bottom_left = '0 0 0'
top_right = '${fparse cladding_ir + cladding_thickness} ${fparse fuel_y_start + fuel_height} 0'
included_boundaries = 'cladding_inside_right'
boundary_new = '1005'
[]
[gas_height]
type = SideSetsFromBoundingBoxGenerator
input = sodium_height
bottom_left = '0 ${fparse fuel_y_start + fuel_height} 0'
top_right = '${fparse cladding_ir + cladding_thickness} ${fparse fuel_y_start + fuel_height + gas_plenum_height + top_bot_cladding_height} 0'
included_boundaries = 'cladding_inside_right'
boundary_new = '1006'
[]
[sodium_plenum_rename]
type = RenameBoundaryGenerator
input = gas_height
old_boundary = '1005 1006'
new_boundary = 'sodium_height gas_height'
[]
patch_size = 120
patch_update_strategy = always
partitioner = centroid
centroid_partitioner_direction = y
coord_type = RZ
[]
[Variables]
[temp]
initial_condition = 298
block = 'fuel cladding cap stand'
[]
[disp_x]
block = 'fuel cladding cap stand'
[]
[disp_y]
block = 'fuel cladding cap stand'
[]
[]
[Functions]
[fflux_axial_peaking_factors] # Fast flux peaking factor from FIPD database; used for fuel related simulations
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /peakingfactor_flux_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
extrapolate_to_zero = true
[]
[fflux_axial_peaking_factors_elongate] # Fast flux peaking factor from FIPD database; used for cladding related simulations
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /peakingfactor_flux_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
extrapolate_to_zero = true
fuel_elongation_pp = max_fuel_elongation # pp used to track fuel elongation
[]
[flux_history] # Time-dependent pin average fast flux from FIPD database
type = PiecewiseLinear
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /flux_history_ ${pin_id} .csv'}
[]
[clad_od_temp] # Time-dependent cladding OD temperature from FIPD database
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /clad_od_temp_history_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
[]
[ab_sodium_vol]
type = MeshPropertyFunction
mesh_generator = gen
mesh_property_name = sodium_volume
scale_factor = -1.0
[]
[sodium_volume]
# Need to account for the factor that hot pressing is also occupying the open pores
type = ParsedFunction
symbol_names = 'porosity_sodium_logging_avg volume_fuel raw_sodium_vol temp_sodium_avg'
symbol_values = 'porosity_sodium_logging_avg volume_fuel ab_sodium_vol temp_sodium_avg'
# Note the the symbol before volume_fuel should be negative as volume_fuel itself is negative
expression = 'raw_sodium_vol * 954 / (1102 - 0.23 * temp_sodium_avg) - volume_fuel * porosity_sodium_logging_avg'
[]
[power_history] # Time-dependent pin average power from FIPD database
type = PiecewiseLinear
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /power_history_ ${pin_id} .csv'}
[]
[axial_peaking_factors]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /peakingfactor_power_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
[]
[axial_peaking_factors_extended]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /peakingfactor_power_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
fuel_elongation_pp = max_fuel_elongation # pp used to track fuel elongation
[]
[anisotropic_swelling_factor]
type = ParsedFunction
symbol_names = 'disp_x_fuel_radial_surface_avg disp_y_fuel_top_surface_avg fuel_height fuel_radius'
symbol_values = 'disp_x_fuel_radial_surface_avg disp_y_fuel_top_surface_avg ${fuel_height} '
'${fuel_radius}'
expression = '(disp_x_fuel_radial_surface_avg / ${fuel_radius}) / '
'(disp_y_fuel_top_surface_avg / ${fuel_height})'
[]
[gap_thermal_conductivity]
type = ParsedFunction
expression = '124.67 - 0.11381 * t + 5.5226e-5 * t^2 - 1.1842e-8 * t^3'
[]
[id_vpp_func] # vpp_function used to track FCCI-related cladding degradation.
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = id_wastage
argument_column = y
wastage_type = ID
value_column = wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[od_vpp_func] # vpp_function used to track CCCI-related cladding degradation.
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = od_wastage
argument_column = y
wastage_type = OD
value_column = cc_wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = fuel
strain = FINITE
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress '
'hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz '
'elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy '
'strain_zz'
extra_vector_tags = 'ref'
eigenstrain_names = 'fuel_thermal_strain solid_swelling_eigenstrain'
use_automatic_differentiation = true
volumetric_locking_correction = true
[]
[cladding]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress '
'creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx '
'elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = 'cladding'
eigenstrain_names = 'cladding_thermal_eigenstrain'
use_automatic_differentiation = true
volumetric_locking_correction = true
[]
[]
[Kernels]
[gravity]
type = ADGravity
block = 'fuel cladding'
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = ADHeatConduction
block = 'fuel cladding cap stand'
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
block = 'fuel cladding cap stand'
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = ADFissionRateHeatSource
variable = temp
block = 'fuel'
fission_rate = fission_rate
extra_vector_tags = 'ref'
energy_deposited_in_fuel = 0.95
[]
[disp_x_dt]
type = ADTimeDerivative
variable = disp_x
block = ' cap stand'
extra_vector_tags = 'ref'
[]
[disp_y_dt]
type = ADTimeDerivative
variable = disp_y
block = 'cap stand'
extra_vector_tags = 'ref'
[]
[disp_x_diff]
type = ADMatAnisoDiffusion
variable = disp_x
block = 'cap stand'
diffusivity = d_x
extra_vector_tags = 'ref'
[]
[disp_y_diff]
type = ADMatDiffusion
variable = disp_y
block = 'cap stand'
diffusivity = 1e8
extra_vector_tags = 'ref'
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_bottom = cladding_outside_bottom
clad_inner_wall = cladding_inside_right
clad_outer_wall = cladding_outside_right
clad_top = cladding_outside_top
pellet_exteriors = fuel_outside_all
[]
[clad_thm_exp]
type = LayeredAverage
variable = clad_thermal_eigenstrain_xx
direction = y
num_layers = 1000
block = cladding
[]
[]
[Contact]
[fuel_cladding_mechanical]
primary = cladding_inside_right
secondary = fuel_outer_radial_surface
model = coulomb
friction_coefficient = 0.1
formulation = mortar
c_normal = ${fparse 1e17 * magic_factor}
c_tangential = ${fparse 1e19 * magic_factor}
correct_edge_dropping = true
[]
[]
[MortarGapHeatTransfer]
[inside2outside]
temperature = temp
boundary = 'cladding_inside_right'
gap_conductivity_function = gap_thermal_conductivity
gap_conductivity_function_variable = temp
primary_boundary = cladding_inside_right
secondary_boundary = fuel_contact_surfaces
gap_flux_options = 'CONDUCTION'
ghost_point_neighbors = true
[]
[]
[BCs]
[no_x_all]
type = ADDirichletBC
variable = disp_x
boundary = 'centerline cap_top'
value = 0.0
preset = false
[]
[no_y_clad]
type = ADDirichletBC
variable = disp_y
boundary = 'cladding_inside_bottom'
value = 0.0
preset = false
[]
[Pressure]
[coolantPressure]
boundary = 'cladding_outside_right'
factor = 0.151e6
use_automatic_differentiation = true
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 'inside_surfaces'
initial_pressure = 84116 # in Pa, 12.2 psi
startup_time = 0
R = 8.3143
temperature = temp_gas_avg
volume = volume_plenum
output = plenum_pressure
material_input = fg_released
use_automatic_differentiation = true
[]
[]
[surf] # Setting temperature BC base on FIPD data
type = FunctionDirichletBC
variable = temp
boundary = 'cladding_outside_bottom cladding_outside_right cladding_outside_top'
function = clad_od_temp
[]
[]
[AuxVariables]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[relx]
[]
[clad_thm_exp]
order = CONSTANT
family = MONOMIAL
block = cladding
[]
[clad_thermal_eigenstrain_xx]
order = CONSTANT
family = MONOMIAL
block = cladding
[]
[]
[AuxKernels]
[cdf_amount]
block = cladding
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[clad_thm_exp]
type = SpatialUserObjectAux
variable = clad_thm_exp
execute_on = 'initial timestep_end'
user_object = clad_thm_exp
block = cladding
[]
[clad_thermal_eigenstrain_xx]
type = ADRankTwoAux
rank_two_tensor = cladding_thermal_eigenstrain
variable = clad_thermal_eigenstrain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = cladding
[]
[]
[Materials]
[longHT9_failure]
type = HT9FailureClad
block = cladding
method = cdf_long
temperature = temp
outputs = all
hoop_stress = stress_zz # Since 2D-RZ
[]
[d_x]
type = ADConstantAnisotropicMobility
tensor = '1e3 0 0
0 1e6 0
0 0 0'
M_name = d_x
[]
[cap_thcond]
type = ADGenericConstantMaterial
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '65 1200 830'
block = 'cap stand'
outputs = all
[]
[interconnected_porosity]
type = ADParsedMaterial
block = 'fuel'
property_name = interconnected_porosity
material_property_names = 'porosity interconnectivity'
expression = 'porosity * interconnectivity'
outputs = all
[]
[fission_rate]
type = ADUPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${fuel_radius}
initial_X_Zr=${initial_X_Zr}
X_Zr = ${initial_X_Zr}
X_Pu_function = 0
block = 'fuel'
outputs = all
[]
[fission_rate_elongate]
type = ADUPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors_extended
pellet_radius = ${fuel_radius}
# initial_X_Zr=${initial_X_Zr}
X_Zr = ${initial_X_Zr}
X_Pu_function = 0
block = 'cladding'
outputs = all
fission_rate_name = fission_rate
[]
[burnup]
type = ADUPuZrBurnup
initial_X_Zr = ${initial_X_Zr}
initial_X_Pu = 0
density = ${fuel_density}
block = 'fuel'
outputs = all
[]
[burnup_elongate]
type = ADUPuZrBurnup
initial_X_Pu = 0
initial_X_Zr = ${initial_X_Zr}
outputs = all
block = cladding
density = ${fuel_density}
burnup_name = burnup
[]
[fuel_elastic_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'hotpress fuel_upuzrcreep gas_swelling'
block = 'fuel'
outputs = all
[]
[hotpress]
type = ADUPuZrHotPressingStressUpdate
block = 'fuel'
outputs = all
surface_energy = 1.6
plenum_pressure = plenum_pressure
porosity_name = porosity
max_inelastic_increment = 1e-1
interconnectivity = interconnectivity
bubble_concentration = ${bubble_concentration}
temperature = temp
creep_model = MFH
fission_rate = fission_rate
atomic_volume = 2.15e-29
porosity_start = 0.01
porosity_end = 0
grain_boundary_D0 = 4e-29
grain_boundary_Q = 0
absolute_tolerance = 1e-9
[]
[porosity]
type = ADPorosityFromStrain
block = 'fuel'
initial_porosity = 1e-10
inelastic_strain = 'combined_inelastic_strain'
outputs = all
[]
[fuel_elasticity_tensor]
type = ADUPuZrElasticityTensor
X_Zr = ${initial_X_Zr}
X_Pu = 0
youngs_model = LANL
block = 'fuel'
temperature = temp
use_old_porosity = true
outputs = all
output_properties = 'youngs_modulus poissons_ratio'
[]
[fuel_upuzrcreep]
type = ADUPuZrCreepUpdate
block = 'fuel'
temperature = temp
porosity = porosity
use_old_porosity = true
max_inelastic_increment = 1e-1
outputs = all
automatic_differentiation_return_mapping = false
[]
[fuel_thermal_expansion]
type = ADUPuZrThermalExpansionEigenstrain
block = 'fuel'
temperature = temp
stress_free_temperature = 298.0
eigenstrain_name = fuel_thermal_strain
outputs = all
thermal_expansion_model = LANL
X_Zr = ${initial_X_Zr}
X_Pu = 0
[]
[gas_swelling]
type = ADSimpleFissionGasViscoplasticityStressUpdate
temperature = temp
outputs = all
block = 'fuel'
bubble_concentration = ${bubble_concentration}
initial_bubble_concentration = ${bubble_concentration}
compute_interconnectivity = true
fission_gas_yield = 0.3017 #0.25
fission_rate = fission_rate
initial_atoms_per_bubble = 1e-05
initial_bubble_radius = 1e-15
initial_fgm_dissolved = 0
interconnection_cutoff = 0.99
interconnection_initiating_porosity = 0.23
interconnection_terminating_porosity = 0.25
max_inelastic_increment = 1e-2
retained_gas_fraction = 0.25
interconnection_dependent_retained_gas_fraction = 0.5
surface_energy = 1.6
anisotropic_factor = 0.26
initial_porosity = 1e-10
[]
[solid_swelling]
type = ADBurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = 'fuel'
swelling_name = 'solid_swelling'
outputs = all
[]
[metal_fuel_thermal]
type = ADUPuZrThermal
block = 'fuel'
X_Zr = ${initial_X_Zr}
X_Pu = 0
spheat_model = savage
porosity = porosity
temperature = temp
outputs = all
porosity_model = logged
sodium_logged_porosity = sodium_logged_porosity
[]
[sodium_logging]
type = ADUPuZrSodiumLogging
block = 'fuel'
porosity = porosity
interconnectivity = interconnectivity
sodium_infiltration_fraction = 0.28
outputs = all
[]
[fuel_density]
type = ADStrainAdjustedDensity
block = 'fuel'
strain_free_density = ${fuel_density}
outputs = all
[]
[fast_neutron_flux]
type = ADFastNeutronFlux
calculate_fluence = true
axial_power_profile = fflux_axial_peaking_factors
rod_ave_lin_pow = flux_history
block = fuel
factor = 1.0
outputs = all
[]
[fast_neutron_flux_elongate]
type = ADFastNeutronFlux
calculate_fluence = true
axial_power_profile = fflux_axial_peaking_factors_elongate
rod_ave_lin_pow = flux_history
block = cladding
factor = 1.0
outputs = all
[]
[cladding_elasticity_tensor]
type = ADHT9ElasticityTensor
temperature = temp
block = 'cladding'
outputs = all
id_wastage_degradation_function = id_vpp_func
od_wastage_degradation_function = od_vpp_func
output_properties = 'youngs_modulus poissons_ratio'
[]
[cladding_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'cladding_creep'
block = 'cladding'
outputs = all
[]
[cladding_creep]
type = ADHT9CreepUpdate
block = 'cladding'
temperature = temp
outputs = all
primary_creep_model = MFH
secondary_creep_model = MFH
tertiary_creep_model = MFH
irradiation_creep_model = MFH
use_effective_time_for_tertiary = true
use_effective_time_for_primary = true
fast_neutron_flux = fast_neutron_flux
[]
[thermal_expansion]
type = ADHT9ThermalExpansionEigenstrain
block = 'cladding'
temperature = temp
stress_free_temperature = 298.0
eigenstrain_name = cladding_thermal_eigenstrain
outputs = all
[]
[cladding_thermal]
type = ADHT9Thermal
block = 'cladding'
temperature = temp
outputs = all
[]
[cladding_density]
type = ADStrainAdjustedDensity
block = 'cladding'
strain_free_density = ${cladding_density}
outputs = all
[]
[wastage_thickness]
type = ADMetallicFuelWastage
method = burnup_ht9_opt
burnup = burnup
temperature = temp
scale_factor = 1
block = 'cladding'
outputs = all
[]
[cc_wastage_thickness]
type = ADMetallicFuelCoolantWastage
clad_material = HT9
use_effective_method = true
temperature = temp
scale_factor = 1
block = 'cladding'
outputs = all
[]
[]
[Dampers]
[disp_x]
type = MaxIncrement
variable = disp_x
max_increment = 1e-4
[]
[disp_y]
type = MaxIncrement
variable = disp_y
max_increment = 1e-3
[]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[vcp]
type = VCP
full = true
primary_variable = 'disp_x disp_y temp'
preconditioner = 'LU'
adaptive_condensation = true
lm_variable = 'fuel_cladding_mechanical_normal_lm fuel_cladding_mechanical_tangential_lm inside2outside_thermal_lm'
is_lm_coupling_diagonal = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount -snes_force_iteration'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-15 1'
line_search = 'none'
snesmf_reuse_base = false
verbose = true
l_max_its = 60
nl_max_its = 15 #20
nl_rel_tol = 5e-6
nl_abs_tol = 5e-9
end_time = ${run_time}
dtmin = 1
dtmax = ${max_time_step}
automatic_scaling = true
compute_scaling_once = false
off_diagonals_in_auto_scaling = true
ignore_variables_for_autoscaling = 'fuel_cladding_mechanical_normal_lm fuel_cladding_mechanical_tangential_lm inside2outside_thermal_lm'
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = time_step_limit
force_step_every_function_point = true
max_function_change = 300
timestep_limiting_function = power_history
dt = 1e2
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
# elemental temperatures
[temp_fuel_avg]
type = ElementAverageValue
variable = temp
block = 'fuel'
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = ElementExtremeValue
variable = temp
block = 'fuel'
[]
[temp_fuel_min]
type = ElementExtremeValue
variable = temp
block = 'fuel'
value_type = min
[]
[temp_cladding_avg]
type = ElementAverageValue
variable = temp
block = 'cladding'
[]
[temp_cladding_max]
type = ElementExtremeValue
variable = temp
block = 'cladding'
[]
[temp_cladding_min]
type = ElementExtremeValue
variable = temp
block = 'cladding'
value_type = min
[]
# boundary temperatures
[temp_gas_avg]
type = ElementAverageValue
block = 'cap'
variable = temp
execute_on = 'initial timestep_end'
[]
# Beyond gap closure, sodium temperarture is almost the same as the cap.
[temp_sodium_avg]
type = ElementAverageValue
block = 'cap'
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_inside_surfaces_avg]
type = SideAverageValue
boundary = 'inside_surfaces'
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_fuel_centerline_avg]
type = AxisymmetricCenterlineAverageValue
boundary = 'centerline'
variable = temp
[]
[temp_fuel_centerline_max]
type = NodalExtremeValue
boundary = 'centerline'
variable = temp
[]
[temp_fuel_centerline_min]
type = NodalExtremeValue
boundary = 'centerline'
variable = temp
value_type = min
[]
[temp_fuel_surface_avg]
type = SideAverageValue
boundary = 'fuel_outer_radial_surface'
variable = temp
[]
[temp_fuel_surface_max]
type = NodalExtremeValue
boundary = 'fuel_outer_radial_surface'
variable = temp
[]
[temp_fuel_surface_min]
type = NodalExtremeValue
boundary = 'fuel_outer_radial_surface'
variable = temp
value_type = min
[]
[temp_cladding_inside_right_avg]
type = SideAverageValue
boundary = 'cladding_inside_right'
variable = temp
[]
[temp_cladding_inside_right_max]
type = NodalExtremeValue
boundary = 'cladding_inside_right'
variable = temp
[]
[temp_cladding_outside_right_avg]
type = SideAverageValue
boundary = 'cladding_outside_right'
variable = temp
[]
# stresses
[stress_vonmises_fuel_avg]
type = ElementAverageValue
variable = vonmises_stress
block = 'fuel'
[]
[stress_vonmises_fuel_max]
type = ElementExtremeValue
variable = vonmises_stress
block = 'fuel'
[]
[stress_vonmises_fuel_min]
type = ElementExtremeValue
variable = vonmises_stress
value_type = min
block = 'fuel'
[]
[stress_hydro_fuel_avg]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'fuel'
[]
[stress_hydro_fuel_max]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'fuel'
[]
[stress_hydro_fuel_min]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = 'fuel'
[]
[stress_vonmises_cladding_avg]
type = ElementAverageValue
variable = vonmises_stress
block = 'cladding'
[]
[stress_vonmises_cladding_max]
type = ElementExtremeValue
variable = vonmises_stress
block = 'cladding'
[]
[stress_vonmises_cladding_min]
type = ElementExtremeValue
variable = vonmises_stress
value_type = min
block = 'cladding'
[]
[stress_hydro_cladding_avg]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'cladding'
[]
[stress_hydro_cladding_max]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'cladding'
[]
[stress_hydro_cladding_min]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = 'cladding'
[]
[contact_pressure_max]
type = NodalExtremeValue
variable = fuel_cladding_mechanical_normal_lm
boundary = 'fuel_outer_radial_surface'
[]
# strain information
[strain_solid_swelling_fuel_avg]
type = ElementAverageValue
variable = solid_swelling
block = 'fuel'
[]
[strain_gas_swelling_fuel_avg]
type = ElementAverageValue
variable = effective_fission_gas_strain
block = 'fuel'
[]
[strain_hot_pressing_fuel_avg]
type = ElementAverageValue
variable = effective_hot_pressing_strain
block = 'fuel'
[]
[strain_volumetric_fuel_avg]
type = ElementAverageValue
variable = firstinv_strain
block = 'fuel'
[]
[strain_axial_fuel_avg]
type = ParsedPostprocessor
pp_names = 'disp_y_fuel_top_surface_avg disp_y_fuel_bottom_surface_avg'
expression = '(disp_y_fuel_top_surface_avg - disp_y_fuel_bottom_surface_avg) / ${fuel_height}'
[]
[disp_y_fuel_top_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = 'fuel_top'
[]
[disp_y_fuel_top_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = 'fuel_top'
[]
[disp_y_fuel_bottom_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = 'fuel_bottom'
[]
[disp_y_fuel_bottom_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = 'fuel_bottom'
[]
[disp_x_fuel_radial_surface_max]
type = NodalExtremeValue
variable = disp_x
boundary = 'fuel_outer_radial_surface'
[]
[disp_x_fuel_radial_surface_avg]
type = SideAverageValue
variable = disp_x
boundary = 'fuel_outer_radial_surface'
[]
[disp_x_cladding_interior_max]
type = NodalExtremeValue
variable = disp_x
boundary = 'cladding_inside_right'
[]
[disp_x_cladding_interior_min]
type = NodalExtremeValue
variable = disp_x
boundary = 'cladding_inside_right'
value_type = min
[]
[disp_x_cladding_interior_avg]
type = SideAverageValue
variable = disp_x
boundary = 'cladding_inside_right'
[]
[disp_x_cladding_exterior_max]
type = NodalExtremeValue
variable = disp_x
boundary = 'cladding_outside_right'
[]
[disp_x_cladding_exterior_avg]
type = SideAverageValue
variable = disp_x
boundary = 'cladding_outside_right'
[]
[anisotropic_swelling_factor]
type = FunctionValuePostprocessor
function = anisotropic_swelling_factor
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = fuel_outside_all
[]
# geometric information
[volume_cladding_interior]
type = InternalVolume
boundary = 'cladding_inside_all'
[]
[volume_fuel]
type = InternalVolume
boundary = 'fuel_outside_all'
execute_on = 'initial timestep_end'
[]
[volume_plenum]
type = InternalVolume
boundary = 'inside_surfaces'
execute_on = 'initial timestep_end'
addition = sodium_volume
[]
[plenum_ratio]
type = ParsedPostprocessor
pp_names = 'volume_plenum volume_fuel'
expression = 'volume_plenum / volume_fuel'
execute_on = 'initial timestep_end'
[]
[volume_sodium]
type = FunctionValuePostprocessor
function = sodium_volume
execute_on = 'initial timestep_end'
[]
# energy information
[flux_clad]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = 'cladding_inside_right'
diffusivity = thermal_conductivity
[]
[flux_fuel]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = 'fuel_contact_surfaces'
diffusivity = thermal_conductivity
[]
[power_integral]
type = ADElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = fuel
[]
[linear_heat_generation_rate]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[burnup_avg]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[burnup_max]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fission_rate_avg]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
# fission gas information
[fg_produced]
type = ADElementIntegralMaterialProperty
mat_prop = fgm_produced
block = fuel
[]
[fg_released]
type = ADElementIntegralMaterialProperty
mat_prop = fgm_released
block = fuel
execute_on = 'initial timestep_end'
[]
[fg_percent]
type = FGRPercent
fission_gas_released = fg_released
fission_gas_generated = fg_produced
[]
[interconnected_porosity_fuel_avg]
type = ElementAverageValue
variable = interconnected_porosity
block = fuel
execute_on = 'initial timestep_end'
[]
[porosity_fuel_avg]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[porosity_fuel_max]
type = ElementExtremeValue
variable = porosity
block = fuel
[]
[porosity_fuel_min]
type = ElementExtremeValue
variable = porosity
value_type = min
block = fuel
[]
[porosity_sodium_logging_avg]
type = ElementAverageValue
variable = sodium_logged_porosity
block = fuel
[]
# extras
[actual_time_step_limit]
type = MaterialTimeStepPostprocessor
block = 'fuel cladding'
outputs = none
[]
[time_step_limit]
type = ParsedPostprocessor
expression = 'if(actual_time_step_limit > max_dt, max_dt, actual_time_step_limit)'
pp_names = 'actual_time_step_limit'
constant_names = 'max_dt'
constant_expressions = '${max_time_step}'
[]
[max_wastagethickness]
type = ElementExtremeValue
value_type = max
variable = wastage_thickness
[]
[max_wst_temp]
type=ElementExtremeValue
value_type=max
variable=temp
proxy_variable=wastage_thickness
block='cladding'
[]
[max_wst_burnup]
type=ElementExtremeValue
value_type=max
variable=burnup
proxy_variable=wastage_thickness
block='cladding'
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[]
[VectorPostprocessors]
[id_wastage]
type = FuelRodLineValueSampler
variable = wastage_thickness
material = 'clad'
fraction = 0.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = csv_wst_a
[]
[od_wastage]
type = FuelRodLineValueSampler
variable = cc_wastage_thickness
material = 'clad'
fraction = 1.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[nrad_comparison_a]
type = FIPDAxialPIEComparison
boundary = cladding_outside_right
sort_by = y
csv_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /X447A_ ${pin_id} _PR.csv'}
variable = disp_x
thermal_strain_variable = clad_thm_exp
involved_component = cladding
mesh_generator = gen
series_type_to_read = 'Cladding O.D. (mils)'
outputs = csv_vpp_a
enable = ${enable_a}
[]
[]
[PerformanceMetricOutputs]
outputs = 'console'
[]
[Outputs]
print_linear_residuals = true
color = true
perf_graph = true
sync_times=${time_spots}
[checkpoint]
type = Checkpoint
sync_times = '19339200'
file_base = 'midpoint_cp'
[]
[exodus]
type = Exodus
time_step_interval = 500
sync_times = ${time_spots}
enable = false
file_base = 'x447_${pin_id}_exodus'
[]
[console]
type = Console
show = 'time_step_size max_fuel_elongation burnup_avg max_wastagethickness'
[]
[csv_vpp_a]
type = CSV
sync_only = true
sync_times = ${time_spots_a}
enable = ${enable_a}
execute_postprocessors_on = none
create_latest_symlink = true
file_base = 'x447_${pin_id}_csv_vpp_a'
[]
[csv_wst_a]
type = CSV
sync_only = true
sync_times = ${time_spots_a}
enable = ${enable_a}
execute_postprocessors_on = none
create_latest_symlink = true
file_base = 'x447_${pin_id}_csv_wst_a'
[]
[csv_general]
type = CSV
sync_only = true
sync_times = ${time_spots}
enable = true
file_base = 'x447_${pin_id}_csv_general'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_H/x441_leg_H.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_swelling'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = MaterialRealAux
variable = porosity
property = porosity
block = pellet
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrain
block = pellet
temperature = temp
# hydrostatic_stress = hydrostatic_stress
hydrostatic_stress = 1e6
eigenstrain_name = fuel_volumetric_swelling
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_legacy_swell
[out2]
type = CSV
file_base = x441_${group_name}_legacy_swell_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_legacy_swell_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_legacy_swell_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/sodium_coolant_channel/dp11.i)
# This test applies the new coolant channel model to a realistic geometry, e.g. dp11 from EBR-II.
# It directly adopts geometry parameters from Mesh Generator through MeshMetaDataInterface
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Mesh]
coord_type = RZ
[gen]
type = FIPDRodletMeshGenerator
fipd_geom_file = ../fipd_rodlet_mesh_generator/fipd_pin_design/DP11_design.csv
gap_bottom_length = 0.31e-3 # arbitrary
cladding_bottom_plug_length = 2.24e-3 # arbitrary
cladding_top_plug_length = 2.24e-3 # arbitrary
cladding_sidewall_radial_elements = 4
cladding_sidewall_axial_element_numbers = '2 20 20'
cladding_top_plug_radial_elements = 4
cladding_top_plug_axial_elements = 2
cladding_bottom_plug_radial_elements = 4
cladding_bottom_plug_axial_elements = 2
fuel_radial_elements = 4
fuel_axial_element_intervals = '0 1'
fuel_axial_element_numbers = '20'
use_default_cladding_sidewall_axial_element_intervals = true
elem_type = QUAD4
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 3000'
y = '0 32500'
[]
[flow_rate_history]
type = ConstantFunction
value = 2255
[]
[pwr_axial_peaking_factors]
type = PiecewiseBilinear
data_file = fipd_csv/peakingfactor_power_DP11.csv
axis = 1
[]
[ppf_cdf]
type = PiecewiseBilinear
data_file = fipd_csv/peakingfactor_power_cdf_DP11.csv
axis = 1
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie_f]
type = HeatConductionTimeDerivative
variable = temp
block = fuel
density_name = 16000
extra_vector_tags = 'ref'
[]
[heat_ie_c]
type = HeatConductionTimeDerivative
variable = temp
block = cladding
density_name = 7890
extra_vector_tags = 'ref'
[]
[heat_source]
type = FissionRateHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = cladding_inside_right
secondary = fuel_outer_radial_surface
quadrature = true
gap_conductivity = 61.0
min_gap = 1e-6
[]
[]
[BCs]
[convection]
type = ConvectiveHeatFluxBC
variable = temp
boundary = cladding_outside_right
T_infinity = coolant_temperature
heat_transfer_coefficient = coolant_channel_htc
[]
[]
[FluidProperties]
[sodium_uo]
type = SodiumProperties
[]
[]
[Materials]
[coolant]
type = SodiumCoolantChannelMaterial
inlet_temperature_function = 648.0
rod_linear_power = power_history
inlet_massflux_function = flow_rate_history
axial_power_profile_cdf = ppf_cdf
use_metadata = true
mesh_generator = gen
boundary = cladding_outside_right
temperature = temp
sodium_user_object = sodium_uo
htc_model = BGF
update_temperature = true
pin_location = interior
peclet_limit_behavior = error
outputs = all
[]
[fission_rate]
type = UPuZrFissionRate
X_Zr = 0.225
X_Pu_function = 0
rod_linear_power = power_history
axial_power_profile = pwr_axial_peaking_factors
use_metadata = true
mesh_generator = gen
outputs = all
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = 0.225
X_Pu = 0
spheat_model = savage
thcond_model = lanl
porosity = 0
temperature = temp
[]
[clad_thermal]
type = HT9Thermal
block = cladding
temperature = temp
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
dt = 500
num_steps = 6
[]
[Postprocessors]
[temp_fuel_avg]
type = ElementAverageValue
variable = temp
block = fuel
[]
[temp_fuel_max]
type = ElementExtremeValue
variable = temp
block = fuel
[]
[temp_clad_avg]
type = ElementAverageValue
variable = temp
block = cladding
[]
[temp_clad_max]
type = ElementExtremeValue
variable = temp
block = cladding
[]
[temp_oulet]
type = ElementExtremeValue
variable = coolant_temperature
[]
[]
[Outputs]
csv = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_B/x441_leg_B.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_swelling'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = MaterialRealAux
variable = porosity
property = porosity
block = pellet
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrain
block = pellet
temperature = temp
# hydrostatic_stress = hydrostatic_stress
hydrostatic_stress = 1e6
eigenstrain_name = fuel_volumetric_swelling
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_legacy_swell
[out2]
type = CSV
file_base = x441_${group_name}_legacy_swell_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_legacy_swell_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_legacy_swell_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(examples/non-cylindrical_fuel/3D/non-cyl_incl_creep.i)
initial_fuel_density = 9720.0
[GlobalParams]
energy_per_fission = 3.2e-11
displacements = 'disp_x disp_y disp_z'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = non-cyl_mesh.e
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'cladding displacer'
[]
[fast_neutron_fluence]
block = 'cladding displacer'
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5'
y = '0 29000'
[]
[fission_rate_scale_factor]
type = ParsedFunction
expression = 1407962081891580.0
# 1/cross_sectional_area_of_fuel/energy_per_fission =
# 1407962081891580.0 []
[]
[fission_history]
type = CompositeFunction
functions = 'power_history fission_rate_scale_factor'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = fuel
add_variables = true
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
incremental = true
[]
[displacer]
block = displacer
add_variables = true
eigenstrain_names = 'zirc_thermal_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
incremental = true
[]
[cladding]
block = cladding
add_variables = true
eigenstrain_names = 'zirc_thermal_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
incremental = true
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = FissionRateHeatSource
variable = temp
fission_rate = 'fission_rate'
extra_vector_tags = 'ref'
block = fuel
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 'cladding displacer'
factor = 3e13
rod_ave_lin_pow = power_history
axial_power_profile = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 'cladding displacer'
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[]
[BCs]
[no_z]
type = DirichletBC
boundary = bottom
value = 0.0
variable = disp_z
[]
[no_x]
type = DirichletBC
boundary = 'xzero center'
value = 0.0
variable = disp_x
[]
[no_y]
type = DirichletBC
boundary = 'yzero center'
value = 0.0
variable = disp_y
[]
[Pressure]
[coolantPressure]
boundary = side
factor = 15.5e6
function = pressure_ramp
[]
[]
[]
[Constraints]
[disp_z]
type = EqualValueBoundaryConstraint
variable = disp_z
secondary = top
penalty = 1e5
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = side
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.6599e-2 # m (sqrt(area*4/pi))
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = 1.0
[]
[]
[Materials]
[fission_rate]
type = GenericFunctionMaterial
prop_names = 'fission_rate'
prop_values = fission_history
block = fuel
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = 0.72
initial_X_Pu = 0.0
density = ${initial_fuel_density}
block = fuel
[]
[fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = 0.72
X_Pu = 0
spheat_model = savage
thcond_model = lanl
temperature = temp
porosity = porosity
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 9720.0
[]
[zirc_thermal]
type = HeatConductionMaterial
block = 'cladding displacer'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[zirc_density]
type = StrainAdjustedDensity
block = 'cladding displacer'
strain_free_density = 6551.0
[]
[zirc_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 7.5e10
poissons_ratio = 0.3
block = 'cladding displacer'
[]
[zirc_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zirc_zrycreep'
block = 'cladding displacer'
[]
[zirc_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 'cladding displacer'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[zirc_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 'cladding displacer'
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = zirc_thermal_strain
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = 0.72
X_Pu = 0.0
temperature = temp
block = fuel
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = fuel_creep
block = fuel
[]
[fuel_creep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
[]
[fuel_swelling]
type = UPuZrVolumetricSwellingEigenstrain
temperature = temp
burnup = burnup
fission_rate = fission_rate
eigenstrain_name = fuel_volumetric_strain
block = fuel
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[]
[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
start_time = -200
end_time = 8e7
num_steps = 5000
dtmax = 1e6
dtmin = 1.0
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
l_max_its = 50
l_tol = 8e-3
nl_max_its = 30
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 15
iteration_window = 3
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = fuel
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.875 # rod height
execute_on = timestep_end
[]
[max_temp]
type = NodalExtremeValue
variable = temp
execute_on = timestep_end
[]
[]
[Outputs]
exodus = true
perf_graph = true
csv = true
[console]
type = Console
max_rows = 15
[]
[chkfile]
type = CSV
show = 'max_temp'
execute_on = final
[]
[]
(examples/constituent_redistribution/1d_thermo_composition.i)
# This example demonstrates how to properly model metallic fuel constituent
# redistribution using ADUPuZrPhaseLookup and ADUPuZrMobility. It sets up a
# simplified simulation of Experimental Breeder Reactor II Fuel Element DP81
# using an empirical thermal conductivity correction based on data in Ref. [2].
# The predicted zirconium profile (X_Zr) can be compared to the experimental
# EPMA scan stored in (X_Zr_ref) [1]. This example runs in about 1 minute on 1
# processor using the Newton method.
# References
# [1]: Hofman, G. L., Hayes, S. L., and Petri, M. C. Temperature Gradient
# Driven Constituent Redistribution in U-Zr Alloys. Journal of Nuclear
# Materials 227 (1996). 277-286.
# [2]: Fink, J. K. and Leibowitz, L. Thermodynamic and Transport Properties of
# Sodium Liquid and Vapor. ANL/RE-95/2 (1995).
# [3]: Bauer, T. H. and Holland J. W. In-Pile Measurement of the Thermal
# Conductivity of Irradiated Metallic Fuel. Nuclear Technology 110 (1995)
# 407-421.
[Mesh]
coord_type = RZ
[generated_mesh]
type = GeneratedMeshGenerator
dim = 1
nx = 200
xmax = 2.192e-03
[]
[]
[Variables]
[T]
initial_condition = 298
[]
[X_Zr]
initial_condition = 0.225
[]
[w_Zr]
[]
[]
[BCs]
[T_surf]
type = ADFunctionDirichletBC
variable = T
function = f_T_surf
boundary = right
[]
[]
[Kernels]
# Transient heat generation and conduction
[heat_dt]
type = ADHeatConductionTimeDerivative
variable = T
specific_heat = specific_heat
density_name = density
[]
[heat_conduction]
type = ADHeatConduction
variable = T
thermal_conductivity = irradiated_thermal_conductivity
[]
[heat_source]
type = ADFissionRateHeatSource
variable = T
fission_rate = fission_rate
[]
# Constituent redistribution using reverse Cahn-Hilliard
[X_Zr_dt]
type = ADCoupledTimeDerivative
variable = w_Zr
v = X_Zr
[]
[X_Zr_chemical]
type = ADSplitCHWRes
variable = w_Zr
mob_name = m_c_active
[]
[X_Zr_thermal]
type = ADCHSoretMobility
variable = w_Zr
T = T
mobility = m_t_active
[]
[w_Zr_bulk_int]
type = ADSplitCHParsed
variable = X_Zr
w = w_Zr
f_name = F
kappa_name = 1e-6
[]
[]
[AuxVariables]
[X_Pu]
[]
[X_Zr_ref]
[InitialCondition]
type = FunctionIC
function = f_X_Zr_ref
[]
[]
[]
[Functions]
[f_alpha]
type = PiecewiseMultilinear
data_file = lookup_tables/alpha_frac.txt
[]
[f_beta]
type = PiecewiseMultilinear
data_file = lookup_tables/beta_frac.txt
[]
[f_gamma]
type = PiecewiseMultilinear
data_file = lookup_tables/gamma_frac.txt
[]
[f_delta]
type = PiecewiseMultilinear
data_file = lookup_tables/delta_frac.txt
[]
[f_zeta]
type = PiecewiseMultilinear
data_file = lookup_tables/zeta_frac.txt
[]
[f_X_Zr_eq_alpha]
type = PiecewiseMultilinear
data_file = lookup_tables/zr_in_alpha.txt
[]
[f_X_Zr_eq_beta]
type = PiecewiseMultilinear
data_file = lookup_tables/zr_in_beta.txt
[]
[f_X_Zr_eq_gamma]
type = PiecewiseMultilinear
data_file = lookup_tables/zr_in_gamma.txt
[]
[f_X_Zr_eq_delta]
type = PiecewiseMultilinear
data_file = lookup_tables/zr_in_delta.txt
[]
[f_X_Zr_eq_zeta]
type = PiecewiseMultilinear
data_file = lookup_tables/zr_in_zeta.txt
[]
[f_X_Pu_eq_alpha]
type = PiecewiseMultilinear
data_file = lookup_tables/pu_in_alpha.txt
[]
[f_X_Pu_eq_beta]
type = PiecewiseMultilinear
data_file = lookup_tables/pu_in_beta.txt
[]
[f_X_Pu_eq_gamma]
type = PiecewiseMultilinear
data_file = lookup_tables/pu_in_gamma.txt
[]
[f_X_Pu_eq_delta]
type = PiecewiseMultilinear
data_file = lookup_tables/pu_in_delta.txt
[]
[f_X_Pu_eq_zeta]
type = PiecewiseMultilinear
data_file = lookup_tables/pu_in_zeta.txt
[]
[f_mu_alpha]
type = PiecewiseMultilinear
data_file = lookup_tables/mu_zr_alpha.txt
[]
[f_mu_beta]
type = PiecewiseMultilinear
data_file = lookup_tables/mu_zr_beta.txt
[]
[f_mu_gamma]
type = PiecewiseMultilinear
data_file = lookup_tables/mu_zr_gamma.txt
[]
[f_mu_delta]
type = PiecewiseMultilinear
data_file = lookup_tables/mu_zr_delta.txt
[]
[f_mu_zeta]
type = PiecewiseMultilinear
data_file = lookup_tables/mu_zr_zeta.txt
[]
[f_power]
type = PiecewiseLinear
x = '0 100000 4420000 5111200 11504800 18157600 24969600'
y = '0 31816 30504 29848 30504 29192 29192'
[]
[f_T_surf]
type = PiecewiseLinear
x = '0 100000 4420000 5111200 11504800 18157600 24969600'
y = '298.0 910.4 901.4 896.1 904.5 894.8 895.3'
[]
[f_X_Zr_ref]
type = SplineFunction
x = '0.000e+00 1.099e-05 2.197e-05 3.296e-05 4.394e-05 5.493e-05 6.591e-05 7.690e-05 8.788e-05 9.887e-05 1.099e-04 1.208e-04 1.318e-04 1.428e-04 1.538e-04 1.648e-04 1.758e-04 1.867e-04 1.977e-04 2.087e-04 2.197e-04 2.307e-04 2.417e-04 2.527e-04 2.636e-04 2.746e-04 2.856e-04 2.966e-04 3.076e-04 3.186e-04 3.296e-04 3.405e-04 3.515e-04 3.625e-04 3.735e-04 3.845e-04 3.955e-04 4.064e-04 4.174e-04 4.284e-04 4.394e-04 4.504e-04 4.614e-04 4.724e-04 4.833e-04 4.943e-04 5.053e-04 5.163e-04 5.273e-04 5.383e-04 5.493e-04 5.602e-04 5.712e-04 5.822e-04 5.932e-04 6.042e-04 6.152e-04 6.261e-04 6.371e-04 6.481e-04 6.591e-04 6.701e-04 6.811e-04 6.921e-04 7.030e-04 7.140e-04 7.250e-04 7.360e-04 7.470e-04 7.580e-04 7.690e-04 7.799e-04 7.909e-04 8.019e-04 8.129e-04 8.239e-04 8.349e-04 8.458e-04 8.568e-04 8.678e-04 8.788e-04 8.898e-04 9.008e-04 9.118e-04 9.227e-04 9.337e-04 9.447e-04 9.557e-04 9.667e-04 9.777e-04 9.887e-04 9.996e-04 1.011e-03 1.022e-03 1.033e-03 1.044e-03 1.055e-03 1.066e-03 1.077e-03 1.088e-03 1.099e-03 1.109e-03 1.120e-03 1.131e-03 1.142e-03 1.153e-03 1.164e-03 1.175e-03 1.186e-03 1.197e-03 1.208e-03 1.219e-03 1.230e-03 1.241e-03 1.252e-03 1.263e-03 1.274e-03 1.285e-03 1.296e-03 1.307e-03 1.318e-03 1.329e-03 1.340e-03 1.351e-03 1.362e-03 1.373e-03 1.384e-03 1.395e-03 1.406e-03 1.417e-03 1.428e-03 1.439e-03 1.450e-03 1.461e-03 1.472e-03 1.483e-03 1.494e-03 1.505e-03 1.516e-03 1.527e-03 1.538e-03 1.549e-03 1.560e-03 1.571e-03 1.582e-03 1.593e-03 1.604e-03 1.615e-03 1.626e-03 1.637e-03 1.648e-03 1.659e-03 1.670e-03 1.681e-03 1.692e-03 1.703e-03 1.714e-03 1.725e-03 1.736e-03 1.747e-03 1.758e-03 1.769e-03 1.780e-03 1.791e-03 1.802e-03 1.813e-03 1.824e-03 1.834e-03 1.845e-03 1.856e-03 1.867e-03 1.878e-03 1.889e-03 1.900e-03 1.911e-03 1.922e-03 1.933e-03 1.944e-03 1.955e-03 1.966e-03 1.977e-03 1.988e-03 1.999e-03 2.010e-03 2.021e-03 2.032e-03 2.043e-03 2.054e-03 2.065e-03 2.076e-03 2.087e-03 2.098e-03 2.109e-03 2.120e-03 2.131e-03 2.142e-03 2.153e-03 2.164e-03 2.175e-03 2.186e-03'
y = '3.885e-01 3.885e-01 3.734e-01 3.590e-01 3.453e-01 3.801e-01 4.422e-01 4.596e-01 4.215e-01 3.965e-01 3.933e-01 4.167e-01 4.431e-01 4.037e-01 4.095e-01 4.104e-01 4.010e-01 3.799e-01 3.995e-01 4.261e-01 4.421e-01 4.450e-01 4.256e-01 4.510e-01 5.115e-01 4.718e-01 4.138e-01 4.158e-01 4.454e-01 3.952e-01 2.708e-01 1.811e-01 2.932e-01 3.956e-01 4.010e-01 4.438e-01 4.706e-01 4.574e-01 3.943e-01 3.271e-01 3.642e-01 4.024e-01 3.875e-01 3.970e-01 4.123e-01 4.326e-01 4.353e-01 4.202e-01 3.674e-01 3.546e-01 3.746e-01 4.111e-01 4.174e-01 3.858e-01 3.380e-01 3.172e-01 3.418e-01 3.884e-01 4.080e-01 3.816e-01 3.655e-01 3.654e-01 3.654e-01 3.677e-01 3.751e-01 3.649e-01 3.557e-01 3.597e-01 3.655e-01 3.656e-01 3.542e-01 3.659e-01 3.575e-01 3.202e-01 2.908e-01 3.047e-01 3.069e-01 3.287e-01 3.847e-01 3.949e-01 3.514e-01 3.297e-01 3.263e-01 3.546e-01 3.581e-01 3.608e-01 3.121e-01 2.694e-01 2.931e-01 3.235e-01 2.970e-01 2.552e-01 2.159e-01 1.917e-01 2.040e-01 2.168e-01 1.825e-01 1.284e-01 7.370e-02 4.785e-02 1.842e-02 7.600e-03 7.420e-03 1.751e-02 6.518e-02 7.871e-02 7.470e-02 6.046e-02 1.203e-01 2.068e-01 1.903e-01 8.591e-02 4.031e-02 2.911e-02 5.307e-02 8.001e-02 1.061e-01 1.072e-01 7.464e-02 4.104e-02 3.966e-02 7.244e-02 8.140e-02 7.180e-02 9.492e-02 1.281e-01 1.213e-01 1.188e-01 1.617e-01 2.258e-01 2.321e-01 1.980e-01 1.650e-01 1.621e-01 2.045e-01 2.132e-01 1.669e-01 1.865e-01 2.431e-01 2.144e-01 1.597e-01 1.821e-01 1.962e-01 1.905e-01 2.026e-01 2.446e-01 2.788e-01 2.705e-01 2.518e-01 2.454e-01 2.472e-01 2.465e-01 2.963e-01 3.190e-01 2.726e-01 2.280e-01 2.382e-01 2.713e-01 2.889e-01 2.408e-01 2.094e-01 2.454e-01 2.894e-01 2.808e-01 2.695e-01 2.769e-01 2.813e-01 2.802e-01 2.810e-01 3.856e-01 4.359e-01 3.762e-01 4.293e-01 4.049e-01 3.155e-01 2.501e-01 2.662e-01 3.887e-01 4.248e-01 3.808e-01 3.120e-01 2.897e-01 2.816e-01 2.762e-01 2.350e-01 2.032e-01 2.147e-01 2.246e-01 3.273e-01 3.938e-01 3.301e-01 2.641e-01 2.351e-01 2.482e-01 2.716e-01 2.403e-01 2.083e-01 1.802e-01 1.772e-01 2.982e-01'
[]
[]
[Materials]
[density]
type = ADGenericConstantMaterial
prop_names = density
prop_values = 1.580e+04
[]
# Heat generation and conduction
[fission_rate]
type = ADUPuZrFissionRate
X_Pu_function = 0.0
initial_X_Zr = 0.225
X_Zr = X_Zr
rod_linear_power = f_power
axial_power_profile = 0.927
pellet_radius = 2.192e-03
[]
[burnup]
type = ADUPuZrBurnup
initial_X_Pu = 0.0
initial_X_Zr = 0.225
density = 1.580e+04
outputs = 'all'
[]
[fresh_thermal_conductivity]
type = ADUPuZrThermal
temperature = T
X_Zr = X_Zr
X_Pu = X_Pu
thcond_model = lanl
porosity = 0.0
spheat_model = savage
[]
[k_sodium]
# Empirical correlation from Ref. 2.
type = ADParsedMaterial
property_name = k_sodium
coupled_variables = T
expression = '124.67 - 0.11381 * T + 5.5226e-5 * T^2 - 1.1842e-8*T^3'
[]
[porosity]
# Empirical correlation for solid and gaseous fission product swelling to
# burnup based on Ref. 3. Gaseous porosity increases linearly with burnup
# to porosity_max vol% at burnup_contact at%. Contact and fission gas
# release occur at burnup_contact at%. Gaseous porosity then decreases
# linearly at a rate of porosity_decrease vol% per at% burnup until
# burnup_max at%.
type = ADParsedMaterial
property_name = porosity
material_property_names = burnup
constant_names = 'burnup_contact porosity_max porosity_decrease'
constant_expressions = '0.0075 0.33 0.011'
expression = 'min(porosity_max / burnup_contact * burnup, porosity_max) - porosity_decrease * 100 * max(0.0, burnup - burnup_contact)'
outputs = 'all'
[]
[logged_sodium]
# Empirical correlation for sodium infiltration to burnup based on Ref. 3.
# Sodium begins to infiltrate the fuel at burnup_contact at%. It proceeds
# linearly until it reaches a maximum value of sodium_max vol% at
# burnup_infil at%.
type = ADParsedMaterial
property_name = logged_sodium
material_property_names = burnup
constant_names = 'burnup_contact burnup_infil sodium_max'
constant_expressions = '0.0075 0.0150 0.13'
expression = 'min(sodium_max / (burnup_infil - burnup_contact) * max(0.0, burnup - burnup_contact), sodium_max)'
outputs = 'all'
[]
[gas_porosity]
type = ADParsedMaterial
property_name = gas_porosity
material_property_names = 'porosity logged_sodium'
expression = 'porosity - logged_sodium'
outputs = 'all'
[]
[thermal_conductivity_correction]
# Empirical correlation for the effects of solid and gaseous fission
# product swelling and sodium infiltration on the thermal conductivity of
# the fuel based on Ref. 3.
type = ADParsedMaterial
property_name = thermal_conductivity_correction
material_property_names = 'k_sodium thermal_conductivity gas_porosity logged_sodium'
expression = '(1 - 3 * ((1 - k_sodium / thermal_conductivity) / (2 / 1.72 + (3 - 2 / 1.72) * k_sodium / thermal_conductivity)) * logged_sodium / (1 - gas_porosity)) * (1 - gas_porosity)^(3 / 2)'
outputs = 'all'
[]
[irradiated_thermal_conductivity]
type = ADParsedMaterial
property_name = irradiated_thermal_conductivity
material_property_names = 'thermal_conductivity thermal_conductivity_correction'
expression = 'thermal_conductivity * thermal_conductivity_correction'
[]
# Thermodynamic parameters
[phases]
type = ADUPuZrPhaseLookup
phase_function_names = 'f_alpha f_beta f_gamma f_delta f_zeta'
x_zr_eq_function_names = 'f_X_Zr_eq_alpha f_X_Zr_eq_beta f_X_Zr_eq_gamma f_X_Zr_eq_delta f_X_Zr_eq_zeta'
x_pu_eq_function_names = 'f_X_Pu_eq_alpha f_X_Pu_eq_beta f_X_Pu_eq_gamma f_X_Pu_eq_delta f_X_Pu_eq_zeta'
mu_function_names = 'f_mu_alpha f_mu_beta f_mu_gamma f_mu_delta f_mu_zeta'
temperature = T
x_pu = X_Pu
x_zr = X_Zr
calculate_derivatives = true # can be set to false when using PJFNK
outputs = all
[]
[F]
# This material renames the chemical potential to accomodate the naming
# scheme used in ADSplitCHParsed.
type = ADParsedMaterial
property_name = 'dF/dX_Zr'
material_property_names = mu_active
expression = mu_active
[]
# Kinetic parameters
[mobilities]
type = ADUPuZrMobility
temperature = T
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
automatic_scaling = true
compute_scaling_once = false
scheme = bdf2
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = none
l_max_its = 15
l_tol = 1e-3
nl_max_its = 15
nl_rel_tol = 1e-6
nl_abs_tol = 1e-6
dtmin = 1e-2
dtmax = 1e6
end_time = 24969600
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e5
iteration_window = 2
optimal_iterations = 9
growth_factor = 1.1
cutback_factor = 0.5
[]
[]
[Postprocessors]
[T_cl]
type = PointValue
variable = T
point = '0 0 0'
[]
[burnup_avg]
type = ElementAverageValue
variable = burnup
[]
[porosity_avg]
type = ElementAverageValue
variable = porosity
[]
[logged_sodium_avg]
type = ElementAverageValue
variable = logged_sodium
[]
[gas_porosity_avg]
type = ElementAverageValue
variable = gas_porosity
[]
[correction_avg]
type = ElementAverageValue
variable = thermal_conductivity_correction
[]
[]
[VectorPostprocessors]
[profiles]
type = LineValueSampler
variable = 'T X_Pu X_Zr X_Zr_ref alpha beta gamma delta zeta'
sort_by = x
start_point = '0 0 0'
end_point = '2.192e-03 0 0'
num_points = 201
[]
[]
[Outputs]
perf_graph = true
exodus = true
[console]
type = Console
[]
[csv]
type = CSV
execute_vector_postprocessors_on = final
[]
[]
(test/tests/standard_metallic_outputs_action/x441_mini_fuel_rod.i)
[GlobalParams]
density = 15800.0
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
# Nominal Design Geometric Parameters (X441)
type = FuelPinMeshGenerator
clad_thickness = 0.38e-03
pellet_outer_radius = 2.195e-03
pellet_height = 3.4e-2
clad_top_gap_height = 2.7e-2
clad_gap_width = 0.345e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_bot_gap_height = 0.31e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 1
ny_p = 5
nx_c = 1
ny_c = 5
ny_cu = 1
ny_cl = 1
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 2
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 5e3'
y = '0 44722'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 5e3'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 5e3'
y = '298.0 648.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 343.0e-3
pellet_y_start = 8.1e-3
[]
[engr_radial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_rad / 2.195e-03'
symbol_values = 'max_fuel_radial_disp'
symbol_names = 'fuel_disp_rad'
[]
[engr_axial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_axial / 343.0e-3'
symbol_values = 'max_fuel_elongation'
symbol_names = 'fuel_disp_axial'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain
solid_swelling_eigenstrain'
extra_vector_tags = 'ref'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = 0.345e-3
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = 2.195e-03
X_Zr = 0.225
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = 0.225
density = 15800
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = 0.225
X_Pu = 0.0
block = pellet
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
interconnection_initiating_porosity = 0.23
interconnection_terminating_porosity = 0.25
anisotropic_factor = 0.4
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = 0.225
X_Pu = 0.0
spheat_model = savage
thcond_model = lanl
porosity = porosity
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 15800.0
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
critical_porosity = 0.24
fractional_fgr_initial = 0.8
fractional_fgr_post = 1.0
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 5e3
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e3
time_t = '0 1e4'
time_dt = '1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_clad_creep_strain_mag]
type = ElementExtremeValue
value_type = max
block = clad
variable = effective_creep_strain
[]
[max_fuel_radial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_xx
[]
[max_fuel_axial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_yy
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_fuel_radial_disp]
type = NodalExtremeValue
variable = disp_x
boundary = 'all_pellet_exterior'
[]
[engr_strain_fuel_radial]
type = FunctionValuePostprocessor
function = engr_radial_strain_fuel
[]
[engr_strain_fuel_axial]
type = FunctionValuePostprocessor
function = engr_axial_strain_fuel
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.05 0.0'
num_points = 300
sort_by = y
outputs = 'vec1'
[]
[]
[StandardMetallicFuelRodOutputs]
initial_pressure = 0.084e6 # Pa
fuel_pellet_blocks = 'pellet'
plenum_boundary_name = 'inside_surfaces'
[]
[PerformanceMetricOutputs]
[]
[Outputs]
time_step_interval = 1
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3'
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_mini_fuel_rod_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fission_gas_released_percentage max_clad_hoop_creep max_clad_creep_strain_mag max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[vec1]
type = CSV
file_base = x441_mini_fuel_rod_vec1
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/ad_upuzr_thermal/test.i)
# Base test template used to compare ADUPuZrThermal to hand calculations
[Problem]
solve = false
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 1
[]
[]
[AuxVariables]
[temp]
initial_condition = 800.0
[]
[X_Zr]
[]
[]
[AuxKernels]
[temp_aux]
type = FunctionAux
variable = temp
function = '50 * t + 800'
[]
[zr_aux]
type = FunctionAux
variable = X_Zr
function = ramp
[]
[]
[Functions]
[ramp]
type = ParsedFunction
expression = '0.1 * t + 0.1'
[]
[]
[Materials]
[thermal]
type = ADUPuZrThermal
block = 0
temperature = temp
X_Pu = 0.16
X_Zr = X_Zr
porosity = porosity
outputs = all
[]
[porosity]
type = ADGenericFunctionMaterial
prop_names = porosity
prop_values = ramp
outputs = all
[]
[]
[Executioner]
type = Transient
end_time = 3
[]
[Postprocessors]
[temp]
type = ElementAverageValue
variable = temp
[]
[Zr]
type = ElementAverageValue
variable = X_Zr
[]
[porosity]
type = ElementAverageValue
variable = porosity
[]
[thcond]
type = ElementAverageValue
variable = thermal_conductivity
[]
[spheat]
type = ElementAverageValue
variable = specific_heat
[]
[]
[Outputs]
csv = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_G/x441_grp_G.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(examples/constituent_redistribution/2d_thermo.i)
# This example demonstrates how to loosely couple the metallic fuel constituent
# redistribution model provided by ADUPuZrPhaseLookup and ADUPuZrMobility to a
# thermo solve using the MultiApps system. This file contains the AD thermo
# solve. The composition solve is contained in 2d_composition.i, which is
# executed as a SubApp. The MultiApps system allows for use of different mesh
# resolutions and solver options. The problem simulates irradiation of
# Experimental Breeder Reactor II Fuel Element DP81. The predicted zirconium
# profile (X_Zr) can be compared to the experimental EPMA scan stored in
# (X_Zr_ref) [1]. This example runs in about 4 minutes on 2 processors using
# the Newton method.
# References
# [1]: Hofman, G. L., Hayes, S. L., and Petri, M. C. Temperature Gradient
# Driven Constituent Redistribution in U-Zr Alloys. Journal of Nuclear
# Materials 227 (1996). 277-286.
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 3.810e-04
pellet_outer_radius = 2.192e-03
pellet_height = 3.428e-01
clad_top_gap_height = 2.714e-01
clad_gap_width = 3.480e-04
bottom_clad_height = 2.240e-03
top_clad_height = 2.240e-03
clad_bot_gap_height = 3.100e-04
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 10
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = 3
ny_cl = 3
pellet_quantity = 1
elem_type = QUAD8
[]
[radial_slice]
type = BoundingBoxNodeSetGenerator
input = smeared_pellet_mesh
new_boundary = radial_slice
bottom_left = '-0.001e-03 2.688e-01 0'
top_right = '2.193e-03 2.690e-01 0'
[]
construct_side_list_from_node_list = true
[]
[MultiApps]
[composition]
type = TransientMultiApp
app_type = BisonApp
positions = '0 0 0'
input_files = 2d_composition.i
catch_up = true
max_catch_up_steps = 2
[]
[]
[Transfers]
[to_sub_T]
type = MultiAppGeometricInterpolationTransfer
to_multi_app = composition
source_variable = T
variable = T
[]
[from_sub_xZr]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = composition
source_variable = X_Zr
variable = X_Zr
[]
[from_sub_alpha]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = composition
source_variable = alpha
variable = alpha
[]
[from_sub_beta]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = composition
source_variable = beta
variable = beta
[]
[from_sub_gamma]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = composition
source_variable = gamma
variable = gamma
[]
[from_sub_delta]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = composition
source_variable = delta
variable = delta
[]
[from_sub_zeta]
type = MultiAppGeometricInterpolationTransfer
from_multi_app = composition
source_variable = zeta
variable = zeta
[]
[]
[Variables]
[T]
order = SECOND
family = LAGRANGE
initial_condition = 298
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = T
order = SECOND
quadrature = true
gap_conductivity = 61.0
min_gap = 3.480e-04
primary = 5
secondary = 10
[]
[]
[CoolantChannel]
[convective_clad_surface]
variable = T
inlet_temperature = f_T_coolant_in
inlet_pressure = f_coolant_pressure
inlet_massflux = 2.315e+03
coolant_material = sodium
linear_heat_rate = f_power
axial_power_profile = f_axial_power
subchannel_geometry = triangular
rod_diameter = 5.842e-03
rod_pitch = 6.909e-03
thermal_conductivity = thermal_conductivity_reg
boundary = '1 2 3'
[]
[]
[Kernels]
# Transient heat generation and conduction
[heat_dt]
type = ADHeatConductionTimeDerivative
variable = T
specific_heat = specific_heat
density_name = density
[]
[heat_conduction]
type = ADHeatConduction
variable = T
thermal_conductivity = thermal_conductivity
[]
[heat_source]
type = ADFissionRateHeatSource
block = pellet
variable = T
fission_rate = fission_rate
[]
[]
[AuxVariables]
[gap_conductance_aux]
order = CONSTANT
family = MONOMIAL
[]
[X_Pu]
block = pellet
[]
[X_Zr]
block = pellet
[]
[X_Zr_ref]
block = pellet
[InitialCondition]
type = FunctionIC
function = f_X_Zr_ref
[]
[]
[alpha]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[beta]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gamma]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[delta]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[zeta]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[f_power]
type = PiecewiseLinear
x = '0 100000 4420000 5111200 11504800 18157600 24969600'
y = '0 31816 30504 29848 30504 29192 29192'
[]
[f_coolant_pressure]
type = PiecewiseLinear
x = '0 24969600'
y = '0.151e6 0.151e6'
[]
[f_T_coolant_in]
type = PiecewiseLinear
x = '0 1e5 24959600 24969600'
y = '298.0 644.0 644.0 644.0'
[]
[f_axial_power]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 3.428e-01
pellet_y_start = 2.440e-03
[]
[f_X_Zr_ref]
type = SplineFunction
x = '0.000e+00 1.099e-05 2.197e-05 3.296e-05 4.394e-05 5.493e-05 6.591e-05 7.690e-05 8.788e-05 9.887e-05 1.099e-04 1.208e-04 1.318e-04 1.428e-04 1.538e-04 1.648e-04 1.758e-04 1.867e-04 1.977e-04 2.087e-04 2.197e-04 2.307e-04 2.417e-04 2.527e-04 2.636e-04 2.746e-04 2.856e-04 2.966e-04 3.076e-04 3.186e-04 3.296e-04 3.405e-04 3.515e-04 3.625e-04 3.735e-04 3.845e-04 3.955e-04 4.064e-04 4.174e-04 4.284e-04 4.394e-04 4.504e-04 4.614e-04 4.724e-04 4.833e-04 4.943e-04 5.053e-04 5.163e-04 5.273e-04 5.383e-04 5.493e-04 5.602e-04 5.712e-04 5.822e-04 5.932e-04 6.042e-04 6.152e-04 6.261e-04 6.371e-04 6.481e-04 6.591e-04 6.701e-04 6.811e-04 6.921e-04 7.030e-04 7.140e-04 7.250e-04 7.360e-04 7.470e-04 7.580e-04 7.690e-04 7.799e-04 7.909e-04 8.019e-04 8.129e-04 8.239e-04 8.349e-04 8.458e-04 8.568e-04 8.678e-04 8.788e-04 8.898e-04 9.008e-04 9.118e-04 9.227e-04 9.337e-04 9.447e-04 9.557e-04 9.667e-04 9.777e-04 9.887e-04 9.996e-04 1.011e-03 1.022e-03 1.033e-03 1.044e-03 1.055e-03 1.066e-03 1.077e-03 1.088e-03 1.099e-03 1.109e-03 1.120e-03 1.131e-03 1.142e-03 1.153e-03 1.164e-03 1.175e-03 1.186e-03 1.197e-03 1.208e-03 1.219e-03 1.230e-03 1.241e-03 1.252e-03 1.263e-03 1.274e-03 1.285e-03 1.296e-03 1.307e-03 1.318e-03 1.329e-03 1.340e-03 1.351e-03 1.362e-03 1.373e-03 1.384e-03 1.395e-03 1.406e-03 1.417e-03 1.428e-03 1.439e-03 1.450e-03 1.461e-03 1.472e-03 1.483e-03 1.494e-03 1.505e-03 1.516e-03 1.527e-03 1.538e-03 1.549e-03 1.560e-03 1.571e-03 1.582e-03 1.593e-03 1.604e-03 1.615e-03 1.626e-03 1.637e-03 1.648e-03 1.659e-03 1.670e-03 1.681e-03 1.692e-03 1.703e-03 1.714e-03 1.725e-03 1.736e-03 1.747e-03 1.758e-03 1.769e-03 1.780e-03 1.791e-03 1.802e-03 1.813e-03 1.824e-03 1.834e-03 1.845e-03 1.856e-03 1.867e-03 1.878e-03 1.889e-03 1.900e-03 1.911e-03 1.922e-03 1.933e-03 1.944e-03 1.955e-03 1.966e-03 1.977e-03 1.988e-03 1.999e-03 2.010e-03 2.021e-03 2.032e-03 2.043e-03 2.054e-03 2.065e-03 2.076e-03 2.087e-03 2.098e-03 2.109e-03 2.120e-03 2.131e-03 2.142e-03 2.153e-03 2.164e-03 2.175e-03 2.186e-03'
y = '3.885e-01 3.885e-01 3.734e-01 3.590e-01 3.453e-01 3.801e-01 4.422e-01 4.596e-01 4.215e-01 3.965e-01 3.933e-01 4.167e-01 4.431e-01 4.037e-01 4.095e-01 4.104e-01 4.010e-01 3.799e-01 3.995e-01 4.261e-01 4.421e-01 4.450e-01 4.256e-01 4.510e-01 5.115e-01 4.718e-01 4.138e-01 4.158e-01 4.454e-01 3.952e-01 2.708e-01 1.811e-01 2.932e-01 3.956e-01 4.010e-01 4.438e-01 4.706e-01 4.574e-01 3.943e-01 3.271e-01 3.642e-01 4.024e-01 3.875e-01 3.970e-01 4.123e-01 4.326e-01 4.353e-01 4.202e-01 3.674e-01 3.546e-01 3.746e-01 4.111e-01 4.174e-01 3.858e-01 3.380e-01 3.172e-01 3.418e-01 3.884e-01 4.080e-01 3.816e-01 3.655e-01 3.654e-01 3.654e-01 3.677e-01 3.751e-01 3.649e-01 3.557e-01 3.597e-01 3.655e-01 3.656e-01 3.542e-01 3.659e-01 3.575e-01 3.202e-01 2.908e-01 3.047e-01 3.069e-01 3.287e-01 3.847e-01 3.949e-01 3.514e-01 3.297e-01 3.263e-01 3.546e-01 3.581e-01 3.608e-01 3.121e-01 2.694e-01 2.931e-01 3.235e-01 2.970e-01 2.552e-01 2.159e-01 1.917e-01 2.040e-01 2.168e-01 1.825e-01 1.284e-01 7.370e-02 4.785e-02 1.842e-02 7.600e-03 7.420e-03 1.751e-02 6.518e-02 7.871e-02 7.470e-02 6.046e-02 1.203e-01 2.068e-01 1.903e-01 8.591e-02 4.031e-02 2.911e-02 5.307e-02 8.001e-02 1.061e-01 1.072e-01 7.464e-02 4.104e-02 3.966e-02 7.244e-02 8.140e-02 7.180e-02 9.492e-02 1.281e-01 1.213e-01 1.188e-01 1.617e-01 2.258e-01 2.321e-01 1.980e-01 1.650e-01 1.621e-01 2.045e-01 2.132e-01 1.669e-01 1.865e-01 2.431e-01 2.144e-01 1.597e-01 1.821e-01 1.962e-01 1.905e-01 2.026e-01 2.446e-01 2.788e-01 2.705e-01 2.518e-01 2.454e-01 2.472e-01 2.465e-01 2.963e-01 3.190e-01 2.726e-01 2.280e-01 2.382e-01 2.713e-01 2.889e-01 2.408e-01 2.094e-01 2.454e-01 2.894e-01 2.808e-01 2.695e-01 2.769e-01 2.813e-01 2.802e-01 2.810e-01 3.856e-01 4.359e-01 3.762e-01 4.293e-01 4.049e-01 3.155e-01 2.501e-01 2.662e-01 3.887e-01 4.248e-01 3.808e-01 3.120e-01 2.897e-01 2.816e-01 2.762e-01 2.350e-01 2.032e-01 2.147e-01 2.246e-01 3.273e-01 3.938e-01 3.301e-01 2.641e-01 2.351e-01 2.482e-01 2.716e-01 2.403e-01 2.083e-01 1.802e-01 1.772e-01 2.982e-01'
[]
[]
[Materials]
[fuel_density]
type = ADGenericConstantMaterial
block = pellet
prop_names = density
prop_values = 1.580e+04
[]
# Heat generation and conduction
[fission_rate]
type = ADUPuZrFissionRate
block = pellet
X_Pu_function = 0
initial_X_Zr = 0.225
X_Zr = X_Zr
rod_linear_power = f_power
axial_power_profile = f_axial_power
pellet_radius = 2.192e-03
[]
[burnup]
type = ADUPuZrBurnup
block = pellet
initial_X_Pu = 0
initial_X_Zr = 0.225
density = 1.580e+04
outputs = all
[]
[gaseous_swelling]
type = ADUPuZrGaseousEigenstrain
block = pellet
eigenstrain_name = gaseous_swelling_eigenstrain
temperature = T
initial_porosity = 0
bubble_number_density = 1e20
outputs = 'all'
output_properties = 'gaseous_porosity porosity gas_swelling'
[]
[solid_swelling]
type = ADBurnupDependentEigenstrain
block = pellet
eigenstrain_name = solid_swelling_eigenstrain
swelling_name = solid_swelling
outputs = all
[]
[sodium_logging]
type = ADUPuZrSodiumLogging
block = pellet
porosity = porosity
interconnectivity = interconnectivity
sodium_infiltration_fraction = 0.08
outputs = all
[]
[fuel_thermal_conductivity]
type = ADUPuZrThermal
block = pellet
temperature = T
X_Zr = X_Zr
X_Pu = X_Pu
thcond_model = lanl
porosity_model = logged
porosity = porosity
sodium_logged_porosity = sodium_logged_porosity
spheat_model = savage
[]
[fission_gas_release]
type = ADUPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
porosity = porosity
[]
[clad_density]
type = ADGenericConstantMaterial
block = clad
prop_names = density
prop_values = 7874.0
[]
[clad_thermal_conductivity]
type = ADHT9Thermal
block = clad
temperature = T
[]
[clad_thermal_conductivity_converter]
# This material creates a non-AD version of the cladding thermal
# conductivity, which is used by the CoolantChannel model.
type = MaterialADConverter
block = clad
ad_props_in = thermal_conductivity
reg_props_out = thermal_conductivity_reg
[]
[]
[AuxKernels]
[gap_conductance_aux]
type = MaterialRealAux
variable = gap_conductance_aux
property = gap_conductance
boundary = 10
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
automatic_scaling = true
compute_scaling_once = false
scheme = bdf2
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = none
l_max_its = 15
l_tol = 1e-3
nl_max_its = 15
nl_rel_tol = 1e-6
nl_abs_tol = 1e-6
dtmin = 10
dtmax = 1e6
end_time = 24969600
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e5
iteration_window = 2
optimal_iterations = 9
growth_factor = 1.1
cutback_factor = 0.5
[]
[]
[Postprocessors]
[T_cl]
type = PointValue
variable = T
point = '0 2.689e-01 0'
[]
[burnup_avg]
type = SideAverageValue
variable = burnup
boundary = radial_slice
[]
[porosity_avg]
type = SideAverageValue
variable = porosity
boundary = radial_slice
[]
[logged_sodium_avg]
type = SideAverageValue
variable = sodium_logged_porosity
boundary = radial_slice
[]
[gas_porosity_avg]
type = SideAverageValue
variable = gaseous_porosity
boundary = radial_slice
[]
[solid_swelling_avg]
type = SideAverageValue
variable = solid_swelling
boundary = radial_slice
[]
[gaseous_swelling_avg]
type = SideAverageValue
variable = gas_swelling
boundary = radial_slice
[]
[fis_gas_produced]
type = ADElementIntegralMaterialProperty
block = pellet
mat_prop = fis_gas_prod
[]
[fis_gas_released]
type = ADElementIntegralMaterialProperty
block = pellet
mat_prop = fis_gas_rel
execute_on = 'initial timestep_end'
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[]
[VectorPostprocessors]
[profiles]
type = LineValueSampler
variable = 'T X_Pu X_Zr X_Zr_ref alpha beta gamma delta zeta'
sort_by = x
start_point = '0 2.689e-01 0'
end_point = '2.192e-03 2.689e-01 0'
num_points = 11
[]
[]
[Outputs]
perf_graph = true
exodus = true
[csv]
type = CSV
execute_vector_postprocessors_on = final
[]
[]
(test/tests/metallic_fuel_coolant_wastage/cc_wastage_ht9_eff_full_pin.i)
# This test is to verify the calculation for HT9 Coolant Wastage in a simplified pin mesh (non-AD)
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
X_Zr = 0.225
X_Pu = 0.0
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.381e-03
pellet_outer_radius = 2.158e-03
pellet_height = 342.5e-3
clad_top_gap_height = 479.5e-3
clad_gap_width = 0.382e-03
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_bot_gap_height = 0.31e-3
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 1
ny_p = 1
nx_c = 1
ny_c = 20
ny_cu = 1
ny_cl = 1
pellet_quantity = 1
elem_type = QUAD4
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1E6 1E7'
y = '0 2E4 3E4'
[]
[pwr_axial_peaking_factors]
type = ConstantFunction
value = 1.0
[]
[pwr_cdf]
type = PiecewiseLinear
axis = y
x = '0 2.55e-3 342.5e-3'
y = '0 0 1'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie_f]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = pellet
density_name = 16000
[]
[heat_ie_c]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = clad
density_name = 7890
[]
[heat_source]
type = FissionRateHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = 1e-6
emissivity_primary = 0
emissivity_secondary = 0
[]
[]
[FluidProperties]
[sodium_uo]
type = SodiumProperties
[]
[]
[BCs]
[convection]
type = ConvectiveHeatFluxBC
variable = temp
boundary = 2
T_infinity = coolant_temperature
heat_transfer_coefficient = coolant_channel_htc
[]
[]
[Materials]
[coolant]
type = SodiumCoolantChannelMaterial
inlet_temperature_function = 648.0
rod_linear_power = power_history
inlet_massflux_function = 2300
axial_power_profile_cdf = pwr_cdf
pellet_height = 3.425e-01
cladding_radius = 2.921e-03
boundary = clad_outside_right
wire_wrap_diameter = 1.067e-03
temperature = temp
sodium_user_object = sodium_uo
htc_model = BGF
update_temperature = true
pin_location = interior
peclet_limit_behavior = error
outputs = all
[]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = pwr_axial_peaking_factors
pellet_radius = 2.158e-3
outputs = all
[]
[burnup]
type = UPuZrBurnup
density = 16000
outputs = all
[]
[cc_wastage_thickness]
type = MetallicFuelCoolantWastage
clad_material = HT9
use_effective_method = true
temperature = temp
boundary = 2
outputs = all
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
spheat_model = savage
thcond_model = lanl
porosity = 0
temperature = temp
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50
variable = temp
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 100
l_tol = 1e-3
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
end_time = 1E7
dt = 5E5
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[peak_clad_outer_temp]
type = NodalExtremeValue
variable = temp
value_type = max
boundary = 2
outputs = 'console'
[]
[time_max_clad_outer_temp]
type = TimeExtremeValue
postprocessor = peak_clad_outer_temp
outputs = 'console'
[]
[max_wastagethickness]
type = ElementExtremeValue
value_type = max
variable = cc_wastage_thickness
outputs = 'console'
[]
[]
[VectorPostprocessors]
[cc_wastage_profile]
type = SideValueSampler
boundary = 2
sort_by = y
variable = cc_wastage_thickness
[]
[]
[Outputs]
perf_graph = true
console = true
[csv_vec]
type = CSV
file_base = cc_wastage_ht9_eff_full_pin_profile
execute_on = final
[]
[]
(test/tests/sodium_coolant_channel/dp16.i)
# This test applies the new coolant channel model to a realistic geometry, e.g. dp16 from EBR-II.
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
# rod specific parameters
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.381e-03
pellet_outer_radius = 2.184e-03
pellet_height = 3.442e-01
clad_top_gap_height = 2.949e-01
clad_gap_width = 3.556e-04
bottom_clad_height = 2.24e-3 # arbitrary
top_clad_height = 2.24e-3 # arbitrary
clad_bot_gap_height = 0.31e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 10
ny_p = 10
nx_c = 10
ny_c = 30
ny_cu = 3
ny_cl = 3
pellet_quantity = 1
[]
# mesh options
partitioner = centroid
centroid_partitioner_direction = y
[]
[DefaultElementQuality]
failure_type = Warning
[]
[Variables]
[temp]
initial_condition = 300
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie_fuel]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = pellet
density_name = 15800
[]
[heat_ie_clad]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = clad
density_name = 7876
[]
[heat_source]
type = ADFissionRateHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[BCs]
[convection]
type = ConvectiveHeatFluxBC
variable = temp
boundary = clad_outside_right
T_infinity = coolant_temperature
heat_transfer_coefficient = coolant_channel_htc
[]
[]
[AuxVariables]
[cdf]
[]
[]
[AuxKernels]
[cdf_aux]
type = FunctionAux
variable = cdf
function = row_4_cdf
[]
[]
[Functions]
[dp16_power]
type = PiecewiseLinear
# min power, weighted avg, max power
x = '0 1'
y = '44734 44734'
[]
[row_4]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 3.442e-01
pellet_y_start = 2.24e-3
zero_beyond_top_and_bottom = true
[]
[row_4_cdf]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 3.442e-01
pellet_y_start = 2.24e-3
zero_beyond_top_and_bottom = true
cdf = true
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 'clad_inside_right'
secondary = 'pellet_outer_radial_surface'
quadrature = true
gap_conductivity = 61.0
min_gap = 3.556E-04
[]
[]
[FluidProperties]
[sodium_uo]
type = SodiumProperties
[]
[]
[Materials]
[coolant]
type = SodiumCoolantChannelMaterial
inlet_temperature_function = 648.0
rod_linear_power = dp16_power
inlet_massflux_function = 5262.0
axial_power_profile_cdf = row_4_cdf
pellet_height = 3.442e-01
cladding_radius = 2.921e-03
boundary = clad_outside_right
wire_wrap_diameter = 1.067e-03
temperature = temp
sodium_user_object = sodium_uo
htc_model = BGF
update_temperature = true
pin_location = interior
peclet_limit_behavior = error
outputs = all
[]
[fission_rate]
type = ADUPuZrFissionRate
rod_linear_power = dp16_power
axial_power_profile = row_4
pellet_radius = 2.184e-03
X_Zr = 0.225
block = pellet
outputs = all
[]
[metal_fuel_thermal]
type = ADUPuZrThermal
block = pellet
X_Zr = 0.225
X_Pu = 0
spheat_model = savage
thcond_model = lanl
porosity = 0
temperature = temp
[]
[clad_thermal]
type = ADHT9Thermal
block = clad
temperature = temp
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 1
dt = .1
[]
[Postprocessors]
[temp_fuel_avg]
type = ElementAverageValue
variable = temp
block = pellet
[]
[temp_fuel_max]
type = ElementExtremeValue
variable = temp
block = pellet
[]
[temp_clad_avg]
type = ElementAverageValue
variable = temp
block = clad
[]
[temp_clad_max]
type = ElementExtremeValue
variable = temp
block = clad
[]
[temp_oulet]
type = ElementExtremeValue
variable = coolant_temperature
[]
[]
[VectorPostprocessors]
[cladding]
type = SideValueSampler
boundary = clad_outside_right
sort_by = y
variable = 'temp coolant_temperature coolant_channel_htc'
[]
[centerline]
type = SideValueSampler
boundary = centerline
sort_by = y
variable = 'temp'
[]
[]
[Outputs]
[out]
type = CSV
execute_on = final
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_D/x441_1_5D_D.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X423/analysis/x423_vp_base.i)
[GlobalParams]
density = ${fuel_density}
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
X_Pu = ${fuel_pu}
X_Zr = ${fuel_zr}
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[gen]
type = FIPDRodletMeshGenerator
fipd_geom_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} / ${pin_id} _design.csv'}
fipd_as_fabricated_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} / ${pin_id} _as_fabricated.csv'}
gap_bottom_length = 0.31e-3 # arbitrary
cladding_bottom_plug_length = 2.24e-3 # arbitrary
cladding_top_plug_length = 2.24e-3 # arbitrary
cladding_sidewall_radial_elements = 10
cladding_sidewall_axial_element_numbers = '2 150 150'
cladding_top_plug_radial_elements = 10
cladding_top_plug_axial_elements = 5
cladding_bottom_plug_radial_elements = 10
cladding_bottom_plug_axial_elements = 5
fuel_radial_elements = 6
fuel_axial_element_intervals = '0 1'
fuel_axial_element_numbers = '150'
use_default_cladding_sidewall_axial_element_intervals = true
elem_type = QUAD4
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[func_val1]
[]
[func_val2]
[]
# AuxVariables used for thermal expansion correction
[fuel_thermal_strain_xx]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[fuel_thermal_strain_yy]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[fuel_thm_exp]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[clad_thermal_eigenstrain_xx]
order = CONSTANT
family = MONOMIAL
block = cladding
[]
[clad_thm_exp]
order = CONSTANT
family = MONOMIAL
block = cladding
[]
[]
[Functions] #copied from fipd-tdep
[clad_od_temp]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /clad_od_temp_history_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
[]
[power_history]
type = PiecewiseLinear
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /power_history_ ${pin_id} .csv'}
[]
[pwr_axial_peaking_factors]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /peakingfactor_power_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
[]
[pwr_axial_peaking_factors_elongate]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /peakingfactor_power_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
fuel_elongation_pp = max_fuel_elongation
[]
[fflux_axial_peaking_factors]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /peakingfactor_flux_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
extrapolate_to_zero = true
[]
[fflux_axial_peaking_factors_elongate]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /peakingfactor_flux_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
extrapolate_to_zero = true
fuel_elongation_pp = max_fuel_elongation
[]
[flux_history]
type = PiecewiseLinear
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /flux_history_ ${pin_id} .csv'}
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 56465640'
y = '0.151e6 0.151e6'
[]
[id_vpp_func]
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = id_wastage
argument_column = y
wastage_type = ID
value_column = wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[od_vpp_func]
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = od_wastage
argument_column = y
wastage_type = OD
value_column = cc_wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[ci_temp]
type = PiecewiseLinearFromVectorPostprocessor
argument_column = y
component = y
value_column = temp
vectorpostprocessor_name = clad_inn_temp
[]
[na_vol]
type = MeshPropertyFunction
mesh_generator = gen
mesh_property_name = sodium_volume
scale_factor = -1.0
[]
[fuel_height]
type = MeshPropertyFunction
mesh_generator = gen
mesh_property_name = fuel_height
[]
[fuel_radius]
type = MeshPropertyFunction
mesh_generator = gen
mesh_property_name = fuel_radius
[]
[pore_volume_fcn]
type = ParsedFunction
symbol_names = 'volume_fuel interconnected_porosity_fuel_avg'
symbol_values = 'volume_fuel interconnected_porosity_fuel_avg'
expression = '-volume_fuel * interconnected_porosity_fuel_avg'
[]
[anisotropic_swelling_factor]
type = ParsedFunction
symbol_names = 'disp_x_fuel_radial_surface_avg disp_y_fuel_top_surface_avg fuel_height fuel_radius'
symbol_values = 'disp_x_fuel_radial_surface_avg disp_y_fuel_top_surface_avg fuel_height fuel_radius'
expression = '(disp_x_fuel_radial_surface_avg / fuel_radius) / (disp_y_fuel_top_surface_avg / fuel_height)'
[]
[]
# From Topher
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
add_variables = true
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = fuel
eigenstrain_names = 'fuel_thermal_strain solid_swelling_eigenstrain'
use_automatic_differentiation = true
[]
[clad]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = cladding
eigenstrain_names = 'clad_swelling clad_thermal_eigenstrain'
use_automatic_differentiation = true
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = ADGravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = ADHeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie_f]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = fuel
density_name = density
[]
[heat_ie_c]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = cladding
density_name = density
[]
[heat_source]
type = ADFissionRateHeatSource
variable = temp
fission_rate = fission_rate
block = fuel
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = ADMaterialRealAux
property = porosity
variable = porosity
block = fuel
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = fuel_outer_radial_surface
[]
[cdf_amount]
block = cladding
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 'cladding_outside_right'
type = MaterialRealAux
property = failed
variable = element_failed
[]
[volumetric_strain]
type = ADRankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = ADRankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = ADRankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = cladding
[]
[hoop_elastic_strain]
type = ADRankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = cladding
[]
[total_hoop_strain]
type = ADRankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = cladding
[]
[func_val1]
type = FunctionAux
function = id_vpp_func
variable = func_val1
block = cladding
[]
[func_val2]
type = FunctionAux
function = od_vpp_func
variable = func_val2
block = cladding
[]
[fuel_thermal_strain_xx]
type = ADRankTwoAux
rank_two_tensor = fuel_thermal_strain
variable = fuel_thermal_strain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = fuel
[]
[fuel_thermal_strain_yy]
type = ADRankTwoAux
rank_two_tensor = fuel_thermal_strain
variable = fuel_thermal_strain_yy
index_j = 1
index_i = 1
execute_on = 'initial timestep_end'
block = fuel
[]
[fuel_thm_exp]
type = SpatialUserObjectAux
variable = fuel_thm_exp
execute_on = 'initial timestep_end'
user_object = fuel_thm_exp
block = fuel
[]
[clad_thermal_eigenstrain_xx]
type = ADRankTwoAux
rank_two_tensor = clad_thermal_eigenstrain
variable = clad_thermal_eigenstrain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = cladding
[]
[clad_thm_exp]
type = SpatialUserObjectAux
variable = clad_thm_exp
execute_on = 'initial timestep_end'
user_object = clad_thm_exp
block = cladding
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = cladding_inside_right
secondary = fuel_outer_radial_surface
penalty = 1e12
model = frictionless
#system = constraint
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = cladding_inside_right
secondary = fuel_outer_radial_surface
quadrature = true
gap_conductivity = 61.0
min_gap = 0.5e-03
[]
[]
[BCs]
[no_x_all]
type = ADDirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[no_y_fuel]
type = ADDirichletBC
variable = disp_y
boundary = fuel_bottom
value = 0.0
[]
[no_y_clad]
type = ADDirichletBC
variable = disp_y
boundary = cladding_outside_bottom
value = 0.0
[]
[fuel_top_temp]
type = ADFunctionDirichletBC
boundary = fuel_top
variable = temp
function = ci_temp
[]
[surf] #copied from fipd-tdep
type = ADFunctionDirichletBC
variable = temp
boundary = 'cladding_outside_bottom cladding_outside_right cladding_outside_top'
function = clad_od_temp
[]
[Pressure]
[coolantPressure]
boundary = 'cladding_outside_bottom cladding_outside_right cladding_outside_top'
function = coolant_press_ramp
use_automatic_differentiation = true
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 'fuel_outside_all cladding_inside_all'
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fg_released
additional_volumes = volume_pore
temperature_of_additional_volumes = temp_fuel_avg
use_automatic_differentiation = true
[]
[]
[]
[Materials]
[interconnected_porosity] # Topher
type = ADParsedMaterial
property_name = interconnected_porosity
material_property_names = 'porosity interconnectivity'
expression = 'porosity * interconnectivity'
outputs = all
block = fuel
[]
[porosity] # Topher
type = ADPorosityFromStrain
block = fuel
initial_porosity = 1e-10
inelastic_strain = 'combined_inelastic_strain'
outputs = none
[]
[gas_swelling] # Topher
type = ADSimpleFissionGasViscoplasticityStressUpdate
temperature = temp
outputs = all
block = fuel
bubble_concentration = 1e15
initial_bubble_concentration = 1e15
compute_interconnectivity = true
fission_gas_yield = 0.3017
fission_rate = fission_rate
initial_atoms_per_bubble = 1e-05
initial_bubble_radius = 1e-15
initial_fgm_dissolved = 0
interconnection_cutoff = 0.999
interconnection_initiating_porosity = 0.26
interconnection_terminating_porosity = 0.28
max_inelastic_increment = 0.001
retained_gas_fraction = 0.25
interconnection_dependent_retained_gas_fraction = 0.5
surface_energy = 1.6
anisotropic_factor = 0.26
initial_porosity = 1e-10
[]
[solid_swelling] # Topher
type = ADBurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
outputs = all
anisotropic_factor = 0.26
[]
[sodium_logging]
type = ADUPuZrSodiumLogging
block = fuel
porosity = porosity
interconnectivity = interconnectivity
sodium_infiltration_fraction = 0.08
outputs = all
[]
[fission_rate]
type = ADUPuZrFissionRate
block = fuel
rod_linear_power = power_history
axial_power_profile = pwr_axial_peaking_factors
use_metadata = true
mesh_generator = gen
outputs = all
[]
[fission_rate_elongate]
type = ADUPuZrFissionRate
block = cladding
fission_rate_name = fission_rate
rod_linear_power = power_history
axial_power_profile = pwr_axial_peaking_factors_elongate
use_metadata = true
mesh_generator = gen
outputs = all
[]
[burnup]
type = ADUPuZrBurnup
initial_X_Pu = ${fuel_pu}
initial_X_Zr = ${fuel_zr}
density = ${fuel_density}
outputs = all
block = fuel
[]
[burnup_elongate]
type = ADUPuZrBurnup
initial_X_Pu = ${fuel_pu}
initial_X_Zr = ${fuel_zr}
density = ${fuel_density}
outputs = all
block = cladding
burnup_name = burnup
[]
[fast_neutron_flux]
type = ADFastNeutronFlux
calculate_fluence = true
rod_ave_lin_pow = flux_history
axial_power_profile = fflux_axial_peaking_factors
block = fuel
factor = 1.0
outputs = all
[]
[fast_neutron_flux_elongate]
type = ADFastNeutronFlux
calculate_fluence = true
rod_ave_lin_pow = flux_history
axial_power_profile = fflux_axial_peaking_factors_elongate
block = cladding
factor = 1.0
outputs = all
[]
[fuel_elasticity_tensor]
type = ADUPuZrElasticityTensor
block = fuel
temperature = temp
use_old_porosity = true
[]
[fuel_elastic_stress]
type = ADComputeMultipleInelasticStress
# tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep gas_swelling'
block = fuel
outputs = all
[]
[fuel_upuzrcreep]
type = ADUPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
use_old_porosity = true
[]
[fuel_thermal_expansion]
type = ADComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
outputs = all
[]
[metal_fuel_thermal]
type = ADUPuZrThermal
block = fuel
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = ADStrainAdjustedDensity
displacements = 'disp_x disp_y'
block = fuel
strain_free_density = ${fuel_density}
[]
[clad_elasticity_tensor]
type = ADD9ElasticityTensor
temperature = temp
id_wastage_degradation_function = id_vpp_func
od_wastage_degradation_function = od_vpp_func
block = cladding
[]
[clad_stress]
type = ADComputeMultipleInelasticStress
# tangent_operator = nonlinear
inelastic_models = 'clad_ss316creep'
block = cladding
[]
[clad_ss316creep]
type = ADD9CreepUpdate
block = cladding
temperature = temp
fast_neutron_flux = fast_neutron_flux
id_wastage_degradation_function = id_vpp_func
od_wastage_degradation_function = od_vpp_func
[]
[clad_swelling]
type = ADSS316VolumetricSwellingEigenstrain
eigenstrain_name = clad_swelling
fast_neutron_fluence = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
temperature = temp
outputs = all
[]
[thermal_expansion]
type = ADD9ThermalExpansionEigenstrain
block = cladding
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
outputs = all
[]
[clad_thermal]
type = ADD9Thermal
block = cladding
temperature = temp
[]
[clad_density]
type = ADStrainAdjustedDensity
block = cladding
strain_free_density = 7874.0
[]
[longSS316_failure]
type = D9FailureClad
block = cladding
method = steady_state
temperature = temp
outputs = all
hoop_stress = stress_zz # Since 2D-RZ
[]
[wastage_thickness]
type = ADMetallicFuelWastage
method = flux_ss316
temperature = temp
scale_factor = 1
boundary = cladding_inside_right
outputs = all
[]
[cc_wastage_thickness]
type = ADMetallicFuelCoolantWastage
clad_material = SS316
use_effective_method = true
temperature = temp
scale_factor = 1
boundary = cladding_outside_right
outputs = all
[]
[]
[Dampers]
[disp_x]
type = MaxIncrement
variable = disp_x
max_increment = 1e-3
[]
[disp_y]
type = MaxIncrement
variable = disp_y
max_increment = 1e-3
[]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 100
l_tol = 1e-3
nl_max_its = 50
nl_rel_tol = 1e-5
nl_abs_tol = 1e-7
end_time = ${time_last}
dtmin = 1
dtmax = ${max_dt}
automatic_scaling = true
compute_scaling_once = false
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_function = power_history
#max_function_change = 300 # Removed to decrease run time
timestep_limiting_postprocessor = creep_timestep
dt = 100
iteration_window = 2
optimal_iterations = 10
force_step_every_function_point = true
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
outputs = 'csv_general console'
[]
[num_lin_it]
type = NumLinearIterations
outputs = csv_general
[]
[num_nonlin_it]
type = NumNonlinearIterations
outputs = csv_general
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
outputs = csv_general
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
outputs = csv_general
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
outputs = csv_general
[]
[ave_temp_interior]
type = SideAverageValue
boundary = cladding_inside_top
variable = temp
execute_on = 'initial linear'
outputs = csv_general
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = centerline
variable = temp
outputs = csv_general
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
outputs = csv_general
[]
[ave_FST]
type = SideAverageValue
boundary = fuel_outer_radial_surface
variable = temp
outputs = csv_general
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
outputs = csv_general
[]
[ave_CIT]
type = SideAverageValue
boundary = cladding_inside_right
variable = temp
outputs = csv_general
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
outputs = csv_general
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = cladding
outputs = csv_general
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = cladding
outputs = csv_general
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
outputs = csv_general
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
outputs = csv_general
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
outputs = csv_general
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = fuel
outputs = csv_general
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
outputs = csv_general
[]
[clad_inner_vol]
type = InternalVolume
boundary = cladding_inside_all
outputs = csv_general
[]
[pellet_volume]
type = InternalVolume
boundary = fuel_outside_all
outputs = csv_general
[]
[gas_volume]
type = InternalVolume
boundary = 'fuel_outside_all cladding_inside_all'
execute_on = 'initial timestep_end'
addition = na_vol
outputs = csv_general
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = fuel_outer_radial_surface
outputs = csv_general
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = fuel_outer_radial_surface
outputs = csv_general
[]
[flux_from_clad]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = cladding_inside_right
diffusivity = thermal_conductivity
outputs = csv_general
[]
[flux_from_fuel]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = fuel_outer_radial_surface
diffusivity = thermal_conductivity
outputs = csv_general
[]
[rod_total_power]
type = ADElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = fuel
outputs = csv_general
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
outputs = csv_general
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
outputs = csv_general
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
outputs = csv_general
[]
# fission gas information (Topher)
[fg_produced]
type = ADElementIntegralMaterialProperty
mat_prop = fgm_produced
block = fuel
outputs = csv_general
[]
[fg_released]
type = ADElementIntegralMaterialProperty
mat_prop = fgm_released
block = fuel
execute_on = 'initial timestep_end'
outputs = csv_general
[]
[fg_percent]
type = FGRPercent
fission_gas_released = fg_released
fission_gas_generated = fg_produced
outputs = csv_general
[]
[interconnected_porosity_fuel_avg]
type = ElementAverageValue
variable = interconnected_porosity
block = fuel
execute_on = 'initial timestep_end'
outputs = csv_general
[]
[porosity_fuel_avg]
type = ElementAverageValue
variable = porosity
block = fuel
outputs = csv_general
[]
[porosity_fuel_max]
type = ElementExtremeValue
variable = porosity
block = fuel
outputs = csv_general
[]
[porosity_fuel_min]
type = ElementExtremeValue
variable = porosity
value_type = min
block = fuel
outputs = csv_general
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
outputs = 'csv_general console'
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
outputs = csv_general
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
outputs = csv_general
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
outputs = csv_general
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
outputs = csv_general
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = cladding
variable = hoop_creep_strain
outputs = csv_general
[]
[max_clad_creep_strain_mag]
type = ElementExtremeValue
value_type = max
block = cladding
variable = creep_strain_mag
outputs = csv_general
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = cladding
variable = total_hoop_strain
outputs = csv_general
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = fuel_outside_all
outputs = csv_general
[]
[avg_fuel_ax_thm_str]
type = AxisymmetricCenterlineAverageValue
variable = fuel_thermal_strain_yy
boundary = fuel_inner_radial_surface
outputs = csv_general
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'cladding_outside_top cladding_outside_right'
outputs = csv_general
[]
[max_wastagethickness]
type = ElementExtremeValue
value_type = max
variable = wastage_thickness
outputs = 'console'
[]
[avg_fuel_temp]
type = ElementAverageValue
variable = temp
block = fuel
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = csv_general
[]
# Fuel strain information (Topher)
[strain_solid_swelling_fuel_avg]
type = ElementAverageValue
variable = solid_swelling
block = fuel
outputs = csv_general
[]
[strain_gas_swelling_fuel_avg]
type = ElementAverageValue
variable = effective_fission_gas_strain
block = fuel
outputs = csv_general
[]
[strain_volumetric_fuel_avg]
type = ElementAverageValue
variable = firstinv_strain
block = fuel
outputs = csv_general
[]
[volume_fuel]
type = InternalVolume
boundary = 'fuel_outside_all'
execute_on = 'initial timestep_end'
outputs = csv_general
[]
[disp_x_fuel_radial_surface_avg]
type = SideAverageValue
variable = disp_x
boundary = 'fuel_outside_all'
outputs = csv_general
[]
[disp_y_fuel_top_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = 'fuel_top'
outputs = csv_general
[]
[temp_fuel_avg]
type = ElementAverageValue
variable = temp
block = fuel
execute_on = 'initial timestep_end'
outputs = csv_general
[]
[volume_pore]
type = FunctionValuePostprocessor
function = pore_volume_fcn
execute_on = 'initial timestep_end'
outputs = csv_general
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = cladding_outside_right
sort_by = y
outputs = none
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = centerline
sort_by = y
outputs = none
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = fuel_outer_radial_surface
sort_by = y
outputs = none
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = cladding_inside_right
sort_by = y
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = cladding_outside_right
sort_by = y
outputs = none
[]
[id_wastage]
type = FuelRodLineValueSampler
variable = wastage_thickness
material = 'clad'
fraction = 0.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[od_wastage]
type = FuelRodLineValueSampler
variable = cc_wastage_thickness
material = 'clad'
fraction = 1.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
# PIE Comparison VPPs
[nrad_comparison_0]
type = FIPDAxialPIEComparison
boundary = fuel_outer_radial_surface
sort_by = y
csv_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /X423_ ${pin_id} _NRAD.csv'}
variable = disp_x
thermal_strain_variable = fuel_thm_exp
involved_component = fuel
mesh_generator = gen
series_type_to_read = 'Fuel O.D. (mils)'
outputs = csv_vpp_0
enable = ${enable_0}
execute_on = 'initial timestep_end'
extra_pp_output_name = 'extra_csv extra_csv_0'
max_fuel_elongation_pp_name = max_fuel_elongation
avg_fuel_ax_thm_str_pp_name = avg_fuel_ax_thm_str
gas_swelling_pp_name = strain_gas_swelling_fuel_avg
solid_swelling_pp_name = strain_solid_swelling_fuel_avg
[]
[nrad_comparison_a]
type = FIPDAxialPIEComparison
boundary = fuel_outer_radial_surface
sort_by = y
csv_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /X423A_ ${pin_id} _NRAD.csv'}
variable = disp_x
thermal_strain_variable = fuel_thm_exp
involved_component = fuel
mesh_generator = gen
series_type_to_read = 'Fuel O.D. (mils)'
outputs = csv_vpp_a
enable = ${enable_a}
execute_on = 'initial timestep_end'
extra_pp_output_name = 'extra_csv extra_csv_a'
max_fuel_elongation_pp_name = max_fuel_elongation
avg_fuel_ax_thm_str_pp_name = avg_fuel_ax_thm_str
gas_swelling_pp_name = strain_gas_swelling_fuel_avg
solid_swelling_pp_name = strain_solid_swelling_fuel_avg
[]
[nrad_comparison_b]
type = FIPDAxialPIEComparison
boundary = fuel_outer_radial_surface
sort_by = y
csv_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /X423B_ ${pin_id} _NRAD.csv'}
variable = disp_x
thermal_strain_variable = fuel_thm_exp
involved_component = fuel
mesh_generator = gen
series_type_to_read = 'Fuel O.D. (mils)'
outputs = csv_vpp_b
enable = ${enable_b}
execute_on = 'initial timestep_end'
extra_pp_output_name = 'extra_csv extra_csv_b'
max_fuel_elongation_pp_name = max_fuel_elongation
avg_fuel_ax_thm_str_pp_name = avg_fuel_ax_thm_str
gas_swelling_pp_name = strain_gas_swelling_fuel_avg
solid_swelling_pp_name = strain_solid_swelling_fuel_avg
[]
[nrad_comparison_c]
type = FIPDAxialPIEComparison
boundary = fuel_outer_radial_surface
sort_by = y
csv_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /X423C_ ${pin_id} _NRAD.csv'}
variable = disp_x
thermal_strain_variable = fuel_thm_exp
involved_component = fuel
mesh_generator = gen
series_type_to_read = 'Fuel O.D. (mils)'
outputs = csv_vpp_c
enable = ${enable_c}
execute_on = 'initial timestep_end'
extra_pp_output_name = 'extra_csv extra_csv_c'
max_fuel_elongation_pp_name = max_fuel_elongation
avg_fuel_ax_thm_str_pp_name = avg_fuel_ax_thm_str
gas_swelling_pp_name = strain_gas_swelling_fuel_avg
solid_swelling_pp_name = strain_solid_swelling_fuel_avg
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_bottom = cladding_outside_bottom
clad_inner_wall = cladding_inside_right
clad_outer_wall = cladding_outside_right
clad_top = cladding_outside_top
pellet_exteriors = fuel_outside_all
[]
[fuel_thm_exp]
type = LayeredAverage
variable = fuel_thermal_strain_xx
direction = y
num_layers = 1000
block = fuel
[]
[clad_thm_exp]
type = LayeredAverage
variable = clad_thermal_eigenstrain_xx
direction = y
num_layers = 1000
block = cladding
[]
[]
[Outputs]
perf_graph = true
color = false
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
sync_times = ${time_spots}
[]
[csv_vpp_0]
type = CSV
sync_only = true
sync_times = ${time_spots_0}
enable = ${enable_0}
create_latest_symlink = true
[]
[csv_vpp_a]
type = CSV
sync_only = true
sync_times = ${time_spots_a}
enable = ${enable_a}
create_latest_symlink = true
[]
[csv_vpp_b]
type = CSV
sync_only = true
sync_times = ${time_spots_b}
enable = ${enable_b}
create_latest_symlink = true
[]
[csv_vpp_c]
type = CSV
sync_only = true
sync_times = ${time_spots_c}
enable = ${enable_c}
create_latest_symlink = true
[]
[csv_general]
type = CSV
sync_times = ${time_spots}
[]
[extra_csv]
type = CSV
sync_only = true
sync_times = ${time_spots_extra}
[]
[extra_csv_0]
type = CSV
sync_only = true
sync_times = ${time_spots_0}
enable = ${enable_0}
[]
[extra_csv_a]
type = CSV
sync_only = true
sync_times = ${time_spots_a}
enable = ${enable_a}
[]
[extra_csv_b]
type = CSV
sync_only = true
sync_times = ${time_spots_b}
enable = ${enable_b}
[]
[extra_csv_c]
type = CSV
sync_only = true
sync_times = ${time_spots_c}
enable = ${enable_c}
[]
[exodus]
type = Exodus
sync_only = true
sync_times = ${time_spots}
[]
[]
(examples/non-cylindrical_fuel/2D/non-cyl_base_irrad.i)
initial_fuel_density = 9720.0
[GlobalParams]
energy_per_fission = 3.2e-11
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
[mesh]
type = FileMeshGenerator
file = non-cyl_mesh_2d.e
[]
[]
[Variables]
[temp]
initial_condition = 295.0
[]
[]
[AuxVariables]
[fast_neutron_flux]
block = 'cladding displacer'
[]
[fast_neutron_fluence]
block = 'cladding displacer'
[]
[oxide_thickness]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5'
y = '0 29000'
[]
[fission_rate_scale_factor]
type = ParsedFunction
expression = 1407962081891580.0
# 1/cross_sectional_area_of_fuel/energy_per_fission =
# 1407962081891580.0 []
[]
[fission_history]
type = CompositeFunction
functions = 'power_history fission_rate_scale_factor'
[]
[pressure_ramp]
type = PiecewiseLinear
x = '-200 0'
y = '0 1'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = fuel
add_variables = true
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
incremental = true
[]
[displacer]
block = displacer
add_variables = true
eigenstrain_names = 'zirc_thermal_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
incremental = true
[]
[cladding]
block = cladding
add_variables = true
eigenstrain_names = 'zirc_thermal_strain'
generate_output = 'vonmises_stress hydrostatic_stress stress_xx stress_yy stress_zz'
extra_vector_tags = 'ref'
incremental = true
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = FissionRateHeatSource
variable = temp
fission_rate = 'fission_rate'
extra_vector_tags = 'ref'
block = fuel
[]
[]
[AuxKernels]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = 'cladding displacer'
factor = 3e13
rod_ave_lin_pow = power_history
axial_power_profile = 1
execute_on = timestep_begin
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = 'cladding displacer'
fast_neutron_flux = fast_neutron_flux
execute_on = timestep_begin
[]
[oxide_thickness]
type = MaterialRealAux
boundary = 'side'
variable = oxide_thickness
property = oxide_scale_thickness
[]
[]
[BCs]
[center_x]
type = DirichletBC
variable = disp_x
value = 0
boundary = center
[]
[center_y]
type = DirichletBC
variable = disp_y
value = 0
boundary = center
[]
[right_y]
type = DirichletBC
variable = disp_y
value = 0
boundary = right
[]
[Pressure]
[coolantPressure]
boundary = 'side'
factor = 15.5e6
function = pressure_ramp
[]
[]
[]
[CoolantChannel]
[convective_clad_surface] # apply convective boundary to clad outer surface
boundary = 'side'
variable = temp
inlet_temperature = 580 # K
inlet_pressure = 15.5e6 # Pa
inlet_massflux = 3800 # kg/m^2-sec
rod_diameter = 0.6599e-2 # m (sqrt(area*4/pi))
rod_pitch = 1.26e-2 # m
linear_heat_rate = power_history
axial_power_profile = 1.0
oxide_thickness = oxide_thickness
[]
[]
[Materials]
[fission_rate]
type = GenericFunctionMaterial
prop_names = 'fission_rate'
prop_values = fission_history
block = fuel
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = 0.72
initial_X_Pu = 0.0
density = ${initial_fuel_density}
block = fuel
[]
[fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = 0.72
X_Pu = 0
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[zirc_thermal]
type = HeatConductionMaterial
block = 'cladding displacer'
thermal_conductivity = 16.0
specific_heat = 330.0
[]
[zirc_density]
type = StrainAdjustedDensity
block = 'cladding displacer'
strain_free_density = 6551.0
[]
[zirc_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 7.5e10
poissons_ratio = 0.3
block = 'cladding displacer'
[]
[zirc_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = 'zirc_zrycreep'
block = 'cladding displacer'
[]
[zirc_zrycreep]
type = ZryCreepLimbackHoppeUpdate
block = 'cladding displacer'
temperature = temp
fast_neutron_flux = fast_neutron_flux
fast_neutron_fluence = fast_neutron_fluence
model_irradiation_creep = true
model_primary_creep = true
model_thermal_creep = true
[]
[zirc_thermal_expansion]
type = ZryThermalExpansionMATPROEigenstrain
block = 'cladding displacer'
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = zirc_thermal_strain
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = 0.72
X_Pu = 0.0
temperature = temp
block = fuel
[]
[fuel_stress]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
inelastic_models = fuel_creep
block = fuel
[]
[fuel_creep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
[]
[fuel_swelling]
type = UPuZrVolumetricSwellingEigenstrain
temperature = temp
burnup = burnup
fission_rate = fission_rate
eigenstrain_name = fuel_volumetric_strain
block = fuel
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[ZryOxidation]
type = ZryOxidation
boundary = 'side'
clad_inner_radius = 0.00418
clad_outer_radius = 0.00474
normal_operating_temperature_model = epri_kwu_ce
high_temperature_model = leistikow
use_coolant_channel = true
temperature = temp
fast_neutron_flux = fast_neutron_flux
outputs = all
[]
[]
[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
start_time = -200
n_startup_steps = 1
end_time = 8e7
num_steps = 5000
dtmax = 1e6
dtmin = 1.0
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
l_max_its = 50
l_tol = 8e-3
nl_max_its = 30
[TimeStepper]
type = IterationAdaptiveDT
dt = 2e2
optimal_iterations = 15
iteration_window = 3
linear_iteration_ratio = 100
growth_factor = 2
cutback_factor = .5
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = fuel
execute_on = timestep_end
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 1 # rod height
execute_on = timestep_end
[]
[max_temp]
type = NodalExtremeValue
variable = temp
execute_on = timestep_end
[]
[peak_oxide_thickness]
type = ElementExtremeValue
variable = oxide_thickness
block = 'cladding'
value_type = 'max'
execute_on = 'timestep_end'
[]
[]
[Outputs]
exodus = true
perf_graph = true
csv = true
[console]
type = Console
max_rows = 15
[]
[chkfile]
type = CSV
show = 'peak_oxide_thickness'
execute_on = final
[]
[]
(assessment/metallic_fuel/TREAT/M7/analysis/binary_t427.i)
# TREAT M7 U-10Zr pin clad in HT9 transient only simulation.
# Not using transferred initial condition.
# ANL-IFR-124 Test M7 T-427
# Units: m, W, kg, Pa
[Debug]
show_var_residual = 'disp_x disp_y temperature'
show_var_residual_norms = true
[]
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.28451e-11
displacements = 'disp_x disp_y'
stress_free_temperature = 586.0
temperature = temperature
# Some calculated values, which are nice to know.
# u_weight = 0.90126
# pu_weight = 0.00115
# zr_weight = 0.0976
# X_U = 0.779
X_Pu = 0.000969
X_Zr = 0.22
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_bot_gap_height = 0.38e-3
clad_gap_width = 1e-6
clad_thickness = 0.38e-3
clad_top_gap_height = 252.35e-3
pellet_height = 37.3e-2
pellet_outer_radius = 2.54e-3
pellet_quantity = 1
bottom_clad_height = 1.9e-3
top_clad_height = 1.9e-3
elem_type = QUAD8
clad_mesh_density = customize
pellet_mesh_density = customize
nx_c = 3
nx_p = 5
ny_c = 150
ny_cl = 3
ny_cu = 3
ny_p = 175
[]
patch_size = 25
partitioner = centroid
patch_update_strategy = auto
centroid_partitioner_direction = y
[]
[Functions]
[power_history] # Peak power density
type = PiecewiseLinear
data_file = 'm7fa_digitized.csv'
format = columns
scale_factor = 78.8 # g; grams of fuel in pellet for W/g to W
[]
[axial_peaking_factors] # Peak factor (1 max)
type = PiecewiseBilinear
data_file = 'm7_axial_tranAlone.csv'
axis = 1
[]
[q_heat]
type = CompositeFunction
functions = 'power_history axial_peaking_factors'
scale_factor = 132273.8097 # m^-3; volume of fuel slug, 1/V, to make power density
[]
[dt_fun]
type = PiecewiseLinear
x = '0 6 7 9 15 20 25'
y = '0.5 0.5 0.01 0.01 0.01 0.001 0.1'
[]
[]
[Variables]
[temperature]
initial_condition = 586.0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
[slug_mech]
block = pellet
additional_generate_output = 'creep_strain_xx creep_strain_yy creep_strain_zz'
eigenstrain_names = 'slug_thermal_strain'
extra_vector_tags = 'ref'
[]
[clad_mech]
block = clad
additional_generate_output = 'creep_strain_xx creep_strain_yy creep_strain_zz'
eigenstrain_names = 'clad_thermal_eigenstrain'
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = ConstitutiveHeatConduction
extra_vector_tags = 'ref'
variable = temperature
thermal_conductivity = 'thermal_conductivity'
thermal_conductivity_args = 'temperature'
thermal_conductivity_derivs = 'thermal_conductivity_dT'
[]
[heat_ie]
type = ConstitutiveHeatConductionTimeDerivative
extra_vector_tags = 'ref'
variable = temperature
specific_heat = 'specific_heat'
specific_heat_args = 'temperature'
specific_heat_derivs = 'specific_heat_dT'
[]
[vol_heat_source]
type = HeatSource
extra_vector_tags = 'ref'
block = pellet
function = q_heat
variable = temperature
[]
[]
[AuxVariables]
[power_density]
block = pellet
[]
[fission_rate]
block = pellet
[]
[fast_neutron_flux]
block = clad
[]
[fast_neutron_fluence]
block = clad
[]
[creep_rate_aux]
order = CONSTANT
family = MONOMIAL
[]
# Aux variables for output
[energy_density]
block = pellet
initial_condition = 0.0
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[coolant_temperature]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[eutectic_thickness_in]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[eutectic_thickness_out]
order = CONSTANT
family = MONOMIAL
block = clad
[]
[]
[AuxKernels]
[calc_fission_rate]
type = FissionRateGeneral
fission_rate_formulation = POWER_DENSITY
block = pellet
power_density_function = q_heat
variable = fission_rate
execute_on = 'initial timestep_end'
[]
[fast_neutron_flux]
type = FastNeutronFluxAux
variable = fast_neutron_flux
block = clad
factor = 0.6e19
execute_on = 'initial timestep_end'
[]
[fast_neutron_fluence]
type = FastNeutronFluenceAux
variable = fast_neutron_fluence
block = clad
fast_neutron_flux = fast_neutron_flux
execute_on = 'initial timestep_end'
[]
[calc_power_density]
type = FunctionAux
block = pellet
function = q_heat
variable = power_density
execute_on = 'initial timestep_end'
[]
[calc_energy_density]
type = VariableTimeIntegrationAux
block = pellet
order = 2
variable_to_integrate = power_density
variable = energy_density
execute_on = timestep_end
[]
# Hoop stress_zz.
[creep_rate_aux]
type = MaterialRealAux
property = creep_rate
variable = creep_rate_aux
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[coolant_temperature]
type = MaterialRealAux
property = coolant_temperature
variable = coolant_temperature
boundary = 2
[]
[coolant_htc]
type = MaterialRealAux
property = coolant_channel_htc
variable = coolant_htc
boundary = 2
[]
[cdf_amount]
block = clad
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
type = MaterialRealAux
property = failed
variable = element_failed
[]
[fcci_eutectic_in]
execute_on = timestep_end
type = EutecticThicknessFCCI
boundary = 5
variable = eutectic_thickness_in
[]
[fcci_eutectic_out]
execute_on = timestep_end
type = EutecticThicknessFCCI
boundary = 2
variable = eutectic_thickness_out
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
outputs = all
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temperature
execute_on = 'initial linear'
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temperature
outputs = all
block = clad
[]
[avg_fuel_temp]
type = ElementAverageValue
variable = temperature
outputs = all
block = pellet
[]
[max_outer_clad_temp]
type = NodalExtremeValue
variable = temperature
value_type = max
boundary = 2
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temperature
value_type = max
block = clad
outputs = all
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temperature
value_type = max
block = pellet
outputs = all
[]
[peak_outer_fuel_temp]
type = NodalExtremeValue
variable = temperature
value_type = max
boundary = 10
[]
[peak_coolant_temperature]
type = ElementExtremeValue
variable = coolant_temperature
value_type = max
block = clad
outputs = all
[]
[max_power_density]
type = ElementExtremeValue
variable = power_density
value_type = max
block = pellet
[]
[avg_power_density]
type = ElementAverageValue
variable = power_density
block = pellet
outputs = all
[]
[total_deposit_pin_energy]
type = ElementIntegralVariablePostprocessor
variable = energy_density
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
execute_on = 'initial timestep_end'
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial linear'
outputs = all
addition = -2.0e-6 # m3; assuming all bond sodium displaced by closed gap
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
outputs = all
[]
[max_eutectic_pen_in]
type = ElementExtremeValue
variable = eutectic_thickness_in
block = clad
value_type = max
execute_on = timestep_end
outputs = all
[]
[max_eutectic_pen_out]
type = ElementExtremeValue
variable = eutectic_thickness_out
block = clad
value_type = max
execute_on = timestep_end
outputs = all
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temperature
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 73.70
min_gap = 1e-3
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = PenaltyDirichletBC
penalty = 1e10
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
factor = 455054.0
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 1.41343e6
initial_temperature = 309.0
startup_time = 0.0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
output_initial_moles = plenum_moles
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temperature
inlet_temperature = 586.0
inlet_pressure = 455054.0
inlet_massflux = 4520.72
coolant_material = sodium
flow_area = 2.22e-5
hydraulic_diameter = 2.057e-3
heated_perimeter = 1.835e-2
heated_diameter = 4.84e-3
number_axial_zone = 50
htc_correlation_type = 3
compute_enthalpy = true
[]
[]
[Materials]
# Fuel Slug Properties
[set_porosity]
type = GenericConstantMaterial
block = pellet
prop_names = porosity
prop_values = 0.31
[]
[set_mat_fission_rate]
type = ParsedMaterial
block = pellet
coupled_variables = 'fission_rate'
expression = 'fission_rate * 1.0'
property_name = 'fission_rate'
[]
[melted]
type = GenericMaterialFailure
block = pellet
compared = greater_than
variable_check = temperature
constant_criteria = 1600.0
[]
[for_youngs]
# Pulled equation from Bison manual and added temperature limit.
type = ParsedMaterial
block = pellet
outputs = all
output_properties = 'youngs_modulus'
property_name = 'youngs_modulus'
coupled_variables = 'temperature'
material_property_names = 'porosity'
constant_names = 'T_limit E_U T_meltU W_Zr W_Pu B_E Ta_start Ta_end'
constant_expressions = '1550.0 1.6e11 1405.0 0.0976 0.00115 1.2 923.0 973.0'
expression = 'E_p := 1.0 - B_E * porosity; E_W := (1.0 + 0.17 * W_Zr) / (1.0 + 1.34 * W_Zr) - W_Pu; T_act := if(temperature > T_limit, T_limit, temperature); x_smooth := (T_act - Ta_start) / (Ta_end - Ta_start); f_smooth := if(T_act < Ta_start, 0.0, if(T_act > Ta_end, 1.0, 6.0 * pow(x_smooth, 5) - 15.0 * pow(x_smooth, 4) + 10.0 * pow(x_smooth, 3))); E_T := 1.0 - 1.06 * (T_act - 588.0) / T_meltU - f_smooth * 0.3 * (1.0 - 1.06 * (Ta_end - 588.0) / T_meltU); E_U * E_T * E_p * E_W'
[]
[for_poissons]
# Pulled equation from Bison manual and added temperature limit.
type = ParsedMaterial
block = pellet
outputs = all
output_properties = 'poissons_ratio'
property_name = 'poissons_ratio'
coupled_variables = 'temperature'
material_property_names = 'porosity'
constant_names = 'T_limit nu_U T_meltU W_Zr B_nu'
constant_expressions = '1550.0 0.24 1405.0 0.0976 0.8'
expression = 'nu_p := 1.0 - B_nu * porosity; nu_W := (1.0 + 3.4 * W_Zr) / (1.0 + 1.9 * W_Zr); T_act := if(temperature > T_limit, T_limit, temperature); nu_T := 1.0 + 1.2 * (T_act - 588.0) / T_meltU; nu_U *nu_p * nu_W * nu_T'
[]
[slug_elasticity_tensor]
type = ComputeVariableIsotropicElasticityTensor
block = pellet
args = temperature
youngs_modulus = youngs_modulus
poissons_ratio = poissons_ratio
[]
[slug_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'slug_creep'
block = pellet
[]
[slug_creep]
type = UPuZrCreepUpdate
block = pellet
porosity = porosity
max_inelastic_increment = 1e-3
[]
[slug_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
eigenstrain_name = slug_thermal_strain
[]
[slug_thermal]
type = UPuZrThermal
block = pellet
Na_depth = 0.0673
fuel_outer_radius = 2.54e-3
spheat_model = savage
thcond_model = billone
porosity_model = partially_logged
initiating_porosity = 0.24
outputs = all
output_properties = thermal_conductivity
porosity = porosity
[]
[slug_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = 15700.0
[]
[slug_fission_gas_release]
block = pellet
type = UPuZrFissionGasRelease
fission_rate = fission_rate
[]
# Cladding Properties
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
block = clad
tangent_operator = nonlinear
inelastic_models = 'clad_creep'
[]
[clad_fast_flux]
type = FastNeutronFlux
block = clad
factor = 0.6e19
[]
[clad_creep]
type = HT9CreepUpdate
block = clad
[]
[clad_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[failclad]
block = clad
type = HT9FailureClad
hoop_stress = stress_zz
method = cdf_short
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew -snes_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
[]
[]
[Executioner]
type = Transient
automatic_scaling = true
compute_scaling_once = true
line_search = 'none'
l_max_its = 100
l_tol = 1e-3
nl_max_its = 200
nl_rel_tol = 1e-6
nl_abs_tol = 1e-9
start_time = 0.0
end_time = 25.0
dtmin = 0.0001
dtmax = 1.0
[TimeStepper]
type = FunctionDT
function = dt_fun
[]
[Quadrature]
order = FIFTH
side_order = SEVENTH
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
perf_graph = true
time_step_interval = 1
exodus = true
csv = true # Figures comparing to experiment results are based off this csv output.
[console]
type = Console
output_linear = true
output_nonlinear = true
[]
[check]
# Numerical assessment test check at points near important features.
# Checking near the feature but not during it hopefully will not affect the feature computation.
type = CSV
execute_on = TIMESTEP_END
sync_only = true
sync_times = '10 16.5 20'
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_A/x441_leg_A.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_swelling'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = MaterialRealAux
variable = porosity
property = porosity
block = pellet
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrain
block = pellet
temperature = temp
# hydrostatic_stress = hydrostatic_stress
hydrostatic_stress = 1e6
eigenstrain_name = fuel_volumetric_swelling
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_legacy_swell
[out2]
type = CSV
file_base = x441_${group_name}_legacy_swell_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_legacy_swell_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_legacy_swell_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_F/x441_1_5D_F.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(examples/thor_capsule_transfer/pin_with_heat_sink.i)
# Example of adding a heat sink outside of an already irradiated pin.
# An example of using a base irradiation's output exodus file to initialize a
# pin with a heat sink next to it (like in THOR). This is useful for taking
# an EBR-II pin and putting it in TREAT in THOR.
initial_fuel_density = 15800.0
[GlobalParams]
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
X_Pu = 0.16029880703609925
X_Zr = 0.22566146557004974
[]
[Problem]
type = AugmentedLagrangianContactProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
# mesh options
patch_size = 50
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
# These are the setting from the base irradiation for your information
#[smear_2drz]
# type = FuelPinMeshGenerator
# clad_thickness = 0.000381
# pellet_outer_radius = 0.0021971
# pellet_height = 0.342646
# clad_top_gap_height = 0.2620678
# clad_gap_width = 0.0003429
# bottom_clad_height = 0.0127
# top_clad_height = 0.0127
# clad_bot_gap_height = 0.001 # arbitrary
# # meshing parameters
# clad_mesh_density = customize
# pellet_mesh_density = customize
# nx_p = 5
# ny_p = 150
# nx_c = 4
# ny_c = 150
# ny_cu = 3
# ny_cl = 3
# pellet_quantity = 1
# elem_type = QUAD8
#[]
[file] # This is the pin's output exodus
type = FileMeshGenerator
file = base_irradiation_out.e
use_for_exodus_restart = true
[]
[sink] # Generic sink dimensions
type = GeneratedMeshGenerator
dim = 2
xmin = 0.0032639
xmax = 0.005461
nx = 5
ymin = 0.0
ymax = 0.6311138
ny = 100
elem_type = QUAD8
boundary_id_offset = 50
[]
[combine]
type = CombinerGenerator
inputs = 'file sink'
[]
[name_sink]
type = SubdomainBoundingBoxGenerator
input = 'combine'
bottom_left = '0.0032638 -0.00001 0'
top_right = '0.005462 0.6311139 0'
block_id = 5
block_name = 'heat_sink'
[]
[]
[Variables]
[T]
initial_from_file_var = T
[]
[disp_x]
initial_from_file_var = disp_x
[]
[disp_y]
initial_from_file_var = disp_y
[]
[]
[ICs]
[sink_T]
type = ConstantIC
block = heat_sink
variable = T
value = 298 # K
[]
[]
[Problem]
# initial condition is overriding the restarted T variable
allow_initial_conditions_with_restart = true
[]
[AuxVariables]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[creep_strain_mag]
type = MaterialRealAux
property = effective_creep_strain
variable = creep_strain_mag
block = clad
execute_on = timestep_end
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 360'
y = '23500 30000'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = custom
custom_params = '0.88416801 1.07334286 -1.26837226 0.00726538'
pellet_length = 0.342646
pellet_y_start = 0.0137
[]
[axial_flux_peaking_factors]
type = PowerPeakingFunction
fit = custom
custom_params = '0.78912541 1.7214792 -2.09297848 0.19040197'
pellet_length = 0.342646
pellet_y_start = 0.0137
zero_beyond_top_and_bottom = False
[]
[flux_history]
type = PiecewiseLinear
x = '0 86400 31536000' # 1 year
y = '1 2.0e19 1.0e19'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz hydrostatic_stress elastic_strain_xx
elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
[fuel]
additional_generate_output = 'creep_strain_xx creep_strain_yy creep_strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
additional_generate_output = 'creep_strain_xx creep_strain_yy creep_strain_zz'
extra_vector_tags = 'ref'
block = 1
eigenstrain_names = 'clad_thermal_eigenstrain clad_volume_eigenstrain'
[]
[sink]
extra_vector_tags = 'ref'
block = heat_sink
eigenstrain_names = 'sink_thermal_eigenstrain'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = T
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = T
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = T
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.2
normalize_penalty = true
tangential_tolerance = 0.4
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 0.8
al_frictional_force_tolerance = 0.8
[]
[clad_sink_mechanical]
primary = 53
secondary = 2
penalty = 1e12
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.2
normalize_penalty = true
tangential_tolerance = 0.4
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 0.8
al_frictional_force_tolerance = 0.8
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = T
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 75.0
tangential_tolerance = 1e-4
min_gap = 0.0003429
[]
[thermal_sink]
type = GapHeatTransfer
variable = T
primary = 53
secondary = 2
quadrature = true
gap_conductivity = 75.0
tangential_tolerance = 1e-4
min_gap = 0.0003429
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[no_y_sink]
type = DirichletBC
variable = disp_y
boundary = 50
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = 51
factor = 151000.0
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6
startup_time = 0
R = 8.3143
temperature = ave_temp_plenum
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
execute_on = timestep_end
[]
[]
[]
[Materials]
[phase]
type = PhaseUPuZr
block = pellet
AB_temp = 965.15
CD_temp = 995.15
outputs = all
calc_H = false
temperature = T
[]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = 0.0021971
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = 0.22566146557004974
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
block = pellet
temperature = T
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = T
porosity = porosity
max_inelastic_increment = 2e-3
fission_rate = fission_rate
[]
[fuel_thermal_expansion]
type = UPuZrThermalExpansionEigenstrain
block = pellet
temperature = T
stress_free_temperature = 298.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = T
initial_porosity = 0.0
bubble_number_density = 5e17
interconnection_initiating_porosity = 0.16
interconnection_terminating_porosity = 0.18
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
anisotropic_factor = 0.5
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_factor = 1.5
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
spheat_model = savage
thcond_model = billone
porosity = porosity
temperature = T
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fractional_yield = 0.25
critical_porosity = 0.17
fractional_fgr_initial = 0.4
fractional_fgr_post = 0.7354
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_creep'
block = clad
[]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
factor = 1
axial_power_profile = axial_flux_peaking_factors
rod_ave_lin_pow = flux_history
outputs = all
[]
[clad_creep]
type = D9CreepUpdate
fast_neutron_flux = fast_neutron_flux
block = clad
temperature = T
youngs_modulus = 1.88e11
[]
[thermal_expansion]
type = D9ThermalExpansionEigenstrain
block = clad
temperature = T
stress_free_temperature = 298.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = D9Thermal
block = clad
temperature = T
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[clad_volumetric_swelling]
type = D9VolumetricSwellingEigenstrain
eigenstrain_name = clad_volume_eigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
temperature = T
[]
[sink_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 100e9
poissons_ratio = 0.35
block = heat_sink
[]
[sink_stress]
type = ComputeFiniteStrainElasticStress
block = heat_sink
[]
[sink_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = heat_sink
temperature = T
stress_free_temperature = 298.0
eigenstrain_name = sink_thermal_eigenstrain
thermal_expansion_coeff = 8.5e-6
[]
[sink_thermal]
type = HeatConductionMaterial
block = heat_sink
specific_heat = 540
thermal_conductivity = 17
[]
[sink_density]
type = StrainAdjustedDensity
block = heat_sink
strain_free_density = 4.51e3
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 25
nl_rel_tol = 5e-3
nl_abs_tol = 1e-5
end_time = 9
dtmin = 0.01
dtmax = 3
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.5
growth_factor = 2
cutback_factor = 0.1
iteration_window = 5
optimal_iterations = 20
force_step_every_function_point = true
timestep_limiting_function = power_history
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
[]
[num_lin_it]
type = NumLinearIterations
[]
[num_nonlin_it]
type = NumNonlinearIterations
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
[]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = T
execute_on = 'initial linear'
[]
[ave_temp_plenum]
type = SideAverageValue
boundary = 6
variable = T
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = T
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = T
[]
[avg_clad_temp]
type = ElementAverageValue
variable = T
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = T
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = T
value_type = max
block = pellet
[]
[avg_sink_temp]
type = ElementAverageValue
variable = T
block = heat_sink
[]
[peak_sink_temp]
type = ElementExtremeValue
variable = T
value_type = max
block = heat_sink
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = T
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = T
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_integral_power]
type = ElementIntegralPower
variable = T
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[rod_input_power]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.343
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[peak_burnup]
type = ElementExtremeValue
block = pellet
variable = burnup
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[disp_x_max]
type = NodalExtremeValue
variable = disp_x
block = clad
[]
[disp_y_max]
type = NodalExtremeValue
variable = disp_y
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_cladding_creep_strain]
type = ElementExtremeValue
variable = creep_strain_mag
block = clad
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[Outputs]
color = true
exodus = true
perf_graph = true
csv = true
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y T'
show_var_residual_norms = true
[]
[Dampers]
[max_inc_damp_x]
type = MaxIncrement
max_increment = 3e-4
variable = disp_x
[]
[max_inc_damp_y]
type = MaxIncrement
max_increment = 3e-4
variable = disp_y
[]
[max_inc_temp]
type = MaxIncrement
max_increment = 25
variable = T
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_A/x441_grp_A.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_D/x441_leg_D.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_swelling'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = MaterialRealAux
variable = porosity
property = porosity
block = pellet
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrain
block = pellet
temperature = temp
# hydrostatic_stress = hydrostatic_stress
hydrostatic_stress = 1e6
eigenstrain_name = fuel_volumetric_swelling
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_legacy_swell
[out2]
type = CSV
file_base = x441_${group_name}_legacy_swell_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_legacy_swell_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_legacy_swell_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/standard_metallic_outputs_action/x441_mini_fuel_rod_no_std_blk.i)
initial_fuel_density = 15800
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
temperature = temp
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
# Nominal Design Geometric Parameters (X441)
type = FuelPinMeshGenerator
clad_thickness = 0.38e-03
pellet_outer_radius = 2.195e-03
pellet_height = 3.4e-2
clad_top_gap_height = 2.7e-2
clad_gap_width = 0.345e-3
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_bot_gap_height = 0.31e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 1
ny_p = 5
nx_c = 1
ny_c = 5
ny_cu = 1
ny_cl = 1
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 2
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[effective_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 5e3'
y = '0 44722'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 5e3'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 5e3'
y = '298.0 648.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 343.0e-3
pellet_y_start = 8.1e-3
[]
[engr_radial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_rad / 2.195e-03'
symbol_values = 'max_fuel_radial_disp'
symbol_names = 'fuel_disp_rad'
[]
[engr_axial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_axial / 343.0e-3'
symbol_values = 'max_fuel_elongation'
symbol_names = 'fuel_disp_axial'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain
solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[effective_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = effective_creep_strain
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = 0.345e-3
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
temperature = plenum_temperature
volume = plenum_volume
output = plenum_pressure
material_input = fission_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = 2.195e-03
X_Zr = 0.225
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = 0.225
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = 0.225
X_Pu = 0.0
block = pellet
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
interconnection_initiating_porosity = 0.23
interconnection_terminating_porosity = 0.25
anisotropic_factor = 0.4
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = 0.225
X_Pu = 0.0
spheat_model = savage
thcond_model = lanl
porosity = porosity
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
critical_porosity = 0.24
fractional_fgr_initial = 0.8
fractional_fgr_post = 1.0
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 5e3
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e3
time_t = '0 1e4'
time_dt = '1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[plenum_temperature]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[plenum_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = -1.53703e-6
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fission_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fission_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[fission_gas_released_percentage]
type = FGRPercent
fission_gas_released = fission_gas_released
fission_gas_generated = fission_gas_produced
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_clad_creep_strain_mag]
type = ElementExtremeValue
value_type = max
block = clad
variable = effective_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_radial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_xx
[]
[max_fuel_axial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_yy
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_fuel_radial_disp]
type = NodalExtremeValue
variable = disp_x
boundary = 'all_pellet_exterior'
[]
[engr_strain_fuel_radial]
type = FunctionValuePostprocessor
function = engr_radial_strain_fuel
[]
[engr_strain_fuel_axial]
type = FunctionValuePostprocessor
function = engr_axial_strain_fuel
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.05 0.0'
num_points = 300
sort_by = y
outputs = 'vec1'
[]
[clad_radial_displacement]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec2'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
time_step_interval = 1
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3'
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_mini_fuel_rod_no_std_blk_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fission_gas_released_percentage max_clad_hoop_creep max_clad_creep_strain_mag max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[vec1]
type = CSV
file_base = x441_mini_fuel_rod_no_std_blk_vec1
execute_on = 'FINAL'
create_final_symlink = true
[]
[vec2]
type = CSV
file_base = x441_mini_fuel_rod_no_std_blk
execute_on = 'FINAL'
create_final_symlink = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/ad_upuzr_thermal/jacobian_test.i)
# This template tests the AD jacobian for each model in ADUPuZrThermal
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[]
[]
[Variables]
[temp]
[]
[X_Zr]
[]
[X_Pu]
[]
[]
[ICs]
[temp]
type = RandomIC
variable = temp
min = 500
max = 1000
[]
[X_Zr]
type = RandomIC
variable = X_Zr
min = 0
max = .4
[]
[X_Pu]
type = RandomIC
variable = X_Pu
min = 0
max = 0.4
[]
[]
[Kernels]
[temp_diff]
type = ADHeatConduction
variable = temp
[]
[temp_dt]
type = ADHeatConductionTimeDerivative
variable = temp
[]
[X_Zr_diff]
type = ADDiffusion
variable = X_Zr
[]
[X_Zr_dt]
type = ADTimeDerivative
variable = X_Zr
[]
[X_Pu_diff]
type = ADDiffusion
variable = X_Pu
[]
[X_Pu_dt]
type = ADTimeDerivative
variable = X_Pu
[]
[]
[Materials]
[thermal]
type = ADUPuZrThermal
temperature = temp
X_Pu = X_Pu
X_Zr = X_Zr
porosity = porosity
outputs = all
[]
[porosity]
type = ADGenericFunctionMaterial
prop_names = 'porosity density'
prop_values = '0.1 15800'
outputs = all
[]
[]
[Executioner]
automatic_scaling = true
type = Transient
solve_type = NEWTON
end_time = 2
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_E/x441_grp_E.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/ad_upuzr_thermal/porosity_corrections.i)
[Problem]
solve = false
[]
[GlobalParams]
temperature = temp
X_Pu = 0
X_Zr = 0
thcond_model = constant
spheat_model = constant
thermal_conductivity = 1
specific_heat = 1
[]
[Mesh]
[mesh]
type = CartesianMeshGenerator
dim = 1
dx = '1 1 1 1'
ix = '1 1 1 1'
subdomain_id = '0 1 2 3'
[]
[]
[AuxVariables]
[temp]
initial_condition = 800.0
[]
[]
[AuxKernels]
[temp_aux]
type = FunctionAux
variable = temp
function = '25 * t + 800'
[]
[]
[Functions]
[porosity_fcn]
type = ParsedFunction
expression = 't / 25'
[]
[fractional_exact]
type = ParsedFunction
symbol_names = 'porosity'
symbol_values = 'porosity'
expression = '(1.0 - porosity) / (1.0 + 2 * porosity)'
[]
[power_exact]
type = ParsedFunction
symbol_names = 'porosity'
symbol_values = 'porosity'
expression = '(1.0 - porosity)^(1.5 * 2)'
[]
[logged_exact]
type = ParsedFunction
symbol_names = 'porosity logged_porosity temp'
symbol_values = 'porosity logged_porosity temp'
expression = 'pgas := porosity - logged_porosity;
kNa := 124.67 - 0.11381 * temp + 5.5226e-5 * temp^2 - 1.1842e-8 * temp^3;
f := 3.0 * (1.0 - kNa) / (2.0 / 1.72 + (3.0 - 2.0 / 1.72) * kNa) * logged_porosity / (1.0 - pgas);
(1.0 - f) * (1.0 - pgas)^(1.5)'
[]
[]
[Materials]
[porosity]
type = ADGenericFunctionMaterial
prop_names = porosity
prop_values = porosity_fcn
outputs = all
[]
[sodium]
type = ADParsedMaterial
property_name = logged_porosity
material_property_names = porosity
expression = 'if (porosity < 0.2, 0, porosity - 0.2)'
outputs = all
[]
[thcond_none]
type = ADUPuZrThermal
porosity_model = none
outputs = all
block = 0
[]
[thcond_fractional]
type = ADUPuZrThermal
porosity_model = fractional
porosity = porosity
porosity_factor = 2
outputs = all
block = 1
[]
[thcond_power]
type = ADUPuZrThermal
porosity_model = power
porosity = porosity
outputs = all
porosity_factor = 2
block = 2
[]
[thcond_logged]
type = ADUPuZrThermal
porosity_model = logged
porosity = porosity
sodium_logged_porosity = logged_porosity
outputs = all
block = 3
[]
[]
[Executioner]
type = Transient
num_steps = 10
[]
[Postprocessors]
[temp]
type = ElementAverageValue
variable = temp
outputs = none
[]
[porosity]
type = ElementAverageValue
variable = porosity
outputs = none
[]
[logged_porosity]
type = ElementAverageValue
variable = logged_porosity
outputs = none
[]
[none_avg]
type = ElementAverageValue
variable = thermal_conductivity
block = 0
outputs = none
[]
[fractional_avg]
type = ElementAverageValue
variable = thermal_conductivity
block = 1
outputs = none
[]
[power_avg]
type = ElementAverageValue
variable = thermal_conductivity
block = 2
outputs = none
[]
[logged_avg]
type = ElementAverageValue
variable = thermal_conductivity
block = 3
outputs = none
[]
[fractional_exact]
type = FunctionValuePostprocessor
function = fractional_exact
outputs = none
[]
[power_exact]
type = FunctionValuePostprocessor
function = power_exact
outputs = none
[]
[logged_exact]
type = FunctionValuePostprocessor
function = logged_exact
outputs = none
[]
[none_diff]
type = DifferencePostprocessor
value1 = 1
value2 = none_avg
[]
[fractional_diff]
type = DifferencePostprocessor
value1 = fractional_exact
value2 = fractional_avg
[]
[power_diff]
type = DifferencePostprocessor
value1 = power_exact
value2 = power_avg
[]
[logged_diff]
type = DifferencePostprocessor
value1 = logged_exact
value2 = logged_avg
[]
[specific_heat]
type = ElementAverageValue
variable = specific_heat
[]
[]
[Outputs]
csv = true
[]
(examples/metal_fuel/uzr/pin.i)
initial_fuel_density = 15800
[GlobalParams]
energy_per_fission = 3.2e-11 # J/fission
temperature = temp
[]
[Mesh]
coord_type = RZ
[mesh]
type = GeneratedMeshGenerator
dim = 1
nx = 300
xmax = 0.002
[]
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Variables]
[temp]
initial_condition = 298
[]
[X_Zr]
scaling = 1e10
initial_condition = 0.225
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 100000 3901600 4333600 6148000 7948800 '
y = '0 40016 40344 42312 41984 41984 '
[]
[temp_history]
type = PiecewiseLinear
x = '0 100000 3901600 4333600 6148000 7948800 '
y = '298.0 805.5 803.8 811.1 808.5 807.4'
[]
[]
[Kernels]
[heat]
type = ConstitutiveHeatConduction
variable = temp
thermal_conductivity = 'thermal_conductivity'
thermal_conductivity_args = 'temp X_Zr'
thermal_conductivity_derivs = 'thermal_conductivity_dT thermal_conductivity_dZr'
extra_vector_tags = 'ref'
[]
[heat_ie]
type = ConstitutiveHeatConductionTimeDerivative
variable = temp
specific_heat = 'specific_heat'
specific_heat_args = 'temp'
specific_heat_derivs = 'specific_heat_dT'
extra_vector_tags = 'ref'
[]
[heat_source]
type = FissionRateHeatSource
variable = temp
fission_rate_args = 'X_Zr'
fission_rate_derivs = 'fission_rate_dZr'
extra_vector_tags = 'ref'
[]
[ZrDiffusion]
type = ZirconiumDiffusion
variable = X_Zr
temperature = temp
extra_vector_tags = 'ref'
[]
[diffusion_ie]
type = TimeDerivative
variable = X_Zr
extra_vector_tags = 'ref'
[]
[]
[BCs]
[temp_rightside]
type = FunctionDirichletBC
variable = temp
boundary = right
function = temp_history
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = 1.0
pellet_radius = 0.002
initial_X_Zr = 0.225
X_Zr = X_Zr
X_Pu_function = 0.163
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = 0.225
initial_X_Pu = 0.163
density = ${initial_fuel_density}
[]
[metal_fuel_thermal]
type = UPuZrThermal
spheat_model = savage
thcond_model = lanl
porosity = porosity
X_Zr = X_Zr
X_Pu = 0.163
[]
[swelling]
type = UPuZrVolumetricSwellingEigenstrain
burnup = 0
hydrostatic_stress = 0
eigenstrain_name = 'swelling'
output_properties = 'porosity gaseous_porosity'
[]
[fuel_density]
type = GenericConstantMaterial
prop_names = density
prop_values = ${initial_fuel_density}
[]
[phase]
type = PhaseUPuZr
X_Zr = X_Zr
X_Pu = 0.163
AB_temp = 965.15
CD_temp = 995.15
[]
[zr_diff]
type = ZrDiffusivityUPuZr
X_Zr = X_Zr
X_Pu = 0.163
p_alpha = 0.20
p_delta = 0.20
p_beta = 0.20
p_gamma = 0.20
D0_scale_alpha = 15.0
D0_scale_delta = 1.0
D0_scale_beta = 2.0
D0_scale_gamma = 7.0
outputs = all
[]
[]
[Dampers]
[bounded_zr]
type = BoundingValueNodalDamper
variable = X_Zr
max_value = 0.83
min_value = 0
[]
[]
[Preconditioning]
[asdf]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
end_time = 3e6
dtmin = 1e-2
dtmax = 1e6
nl_max_its = 30
l_max_its = 100
nl_abs_tol = 1e-9
nl_rel_tol = 1e-9
l_tol = 1e-05
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e3
optimal_iterations = 8
iteration_window = 2
growth_factor = 2
cutback_factor = .5
timestep_limiting_function = power_history
force_step_every_function_point = true
[]
[]
[Postprocessors]
[dt]
type = TimestepSize
[]
[num_lin]
type = NumLinearIterations
[]
[num_nonlin]
type = NumNonlinearIterations
[]
[ave_temp]
type = ElementAverageValue
variable = temp
block = 0
[]
[X_Zr]
type = NodalExtremeValue
variable = X_Zr
block = 0
value_type = max
[]
[]
[Outputs]
perf_graph = true
#exodus = true
[csv_output]
type = CSV
precision = 8
file_base = pin_out
hide = 'dt num_lin num_nonlin'
execute_on = final
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_E/x441_1_5D_E.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(test/tests/upuzr_thermal/correctodaira.i)
# Melting test for Corrected Odaira model in UPuZrThermal
# Exact results are in eact.xlsx
# T Thermal_Conductivity
# 300 9.555782808
# 400 12.79863588
# 500 15.81004756
# 600 18.66375625
# 700 21.41719027
# 800 24.10060709
# 900 26.68262764
# 1000 28.99420006
# 1100 30.51309064
# 1200 29.4984727
# 1300 16.71263912
# 1400 17.30515713
# 1500 17.86648612
# 1600 18.39502521
# 1700 18.88991211
# 1800 19.35095219
# 1900 19.7784748
[Problem]
solve = false
[]
[Mesh]
[mesh]
type = GeneratedMeshGenerator
dim = 1
[]
[]
[AuxVariables]
[T]
initial_condition = 300.0
[]
[]
[AuxKernels]
[temperature_aux]
type = FunctionAux
variable = T
function = '100 * t + 300'
[]
[]
[Materials]
[thermal]
type = UPuZrThermal
block = 0
temperature = T
X_Pu = 0.126
X_Zr = 0.225
porosity_model = none
outputs = all
spheat_model = karahan
thcond_model = odaria_corrected
[]
[]
[Executioner]
type = Transient
end_time = 16
[]
[Postprocessors]
[T]
type = ElementAverageValue
variable = T
[]
[thcond]
type = ElementAverageValue
variable = thermal_conductivity
[]
[thcond_dT]
type = ElementAverageValue
variable = thermal_conductivity_dT
[]
[thcond_dZr]
type = ElementAverageValue
variable = thermal_conductivity_dZr
[]
[]
[Outputs]
csv = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_C/x441_grp_C.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(examples/metal_fuel/uzr_densification/ebr2_2d_interpores_densification.i)
# Baseline of U10Zr DP21 pin without bond sodium in 2D.
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
temperature = Temperature
stress_free_temperature = 298.0
tangential_tolerance = 1e-4
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
patch_size = 50
patch_update_strategy = always
partitioner = centroid
centroid_partitioner_direction = y
[fuel_2d]
type = FuelPinMeshGenerator
clad_thickness = 3.81e-4
pellet_outer_radius = 24.4e-4
pellet_height = 250.0e-4
clad_top_gap_height = 240.0e-4
clad_gap_width = 1.0e-4
bottom_clad_height = 80.0e-4
top_clad_height = 80.0e-4
clad_bot_gap_height = 10.0e-4
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 20
ny_p = 150
nx_c = 4
ny_c = 150
ny_cu = 8
ny_cl = 8
pellet_quantity = 1
elem_type = QUAD4
[]
[]
[Variables]
[Temperature]
initial_condition = 298.0
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[energy_density]
order = CONSTANT
family = MONOMIAL
block = pellet
initial_condition = 0.0
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 109989115 110376000'
y = '0 45000 45000 0' # LHGR (not power density)
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 1.5552e7'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 2e5 109989115 110376000'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = ParsedFunction
expression = 1.0
[]
[engr_radial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_rad / 2.50e-03'
symbol_values = 'max_fuel_radial_disp'
symbol_names = 'fuel_disp_rad'
[]
[engr_axial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_axial / 100.0e-3'
symbol_values = 'max_fuel_elongation'
symbol_names = 'fuel_disp_axial'
[]
[fission_rate_scale_factor]
type = ParsedFunction
expression = 1.670784726E+15
# 1/cross_sectional_area_of_fuel/energy_per_fission =
# Remember to remove hole area, when there are some
[]
[fission_history]
type = CompositeFunction
functions = 'power_history fission_rate_scale_factor'
# This converts it to a fission rate density.
[]
[]
[Physics/SolidMechanics/QuasiStatic]
add_variables = true
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz hoop_stress'
[fuel]
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
additional_generate_output = 'volumetric_strain'
[]
[clad]
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
additional_generate_output = 'hoop_creep_strain hoop_elastic_strain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = Temperature
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = Temperature
extra_vector_tags = 'ref'
[]
[heat_source]
type = FissionRateHeatSource
variable = Temperature
fission_rate = 'fission_rate'
extra_vector_tags = 'ref'
block = pellet
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[time_integral_fission]
type = VariableTimeIntegrationAux
block = pellet
variable = energy_density
variable_to_integrate = fission_rate
coefficient = 3.2e-11 # energy_per_fission
order = 2
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = Temperature
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = 0.1e-3
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = Temperature
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5000.0 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 0.0069 # m
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
outputs = all
output_properties = 'coolant_temperature coolant_channel_htc'
[]
[]
[Materials]
[fission_rate]
type = GenericFunctionMaterial
prop_names = 'fission_rate'
prop_values = fission_history
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
block = pellet
density = ${initial_fuel_density}
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = 0.225
X_Pu = 0.0
block = pellet
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
eigenstrain_name = fuel_thermal_strain
block = pellet
thermal_expansion_coeff = 1.18e-5
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.3
bubble_number_density = 8.61e17
interconnection_initiating_porosity = 0.26
interconnection_terminating_porosity = 0.28
anisotropic_factor = 0.0
densification = true
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = 0.225
X_Pu = 0.0
spheat_model = savage
thcond_model = lanl
porosity = porosity
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
critical_porosity = 0.27
fractional_fgr_initial = 0.252
fractional_fgr_post = 0.801
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 3e13 # This was recommended in FastNeutronFluxAux for LHGR
# However, this gives 1.35e18 which is not what AL used
# before of 2.47e19. Not sure which is right.
calculate_fluence = true
rod_ave_lin_pow = power_history
axial_power_profile = axial_peaking_factors # which is just 1
outputs = all
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
variable = Temperature
max_increment = 50
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 100
l_tol = 1e-3
nl_max_its = 100
nl_rel_tol = 1e-5
nl_abs_tol = 1e-7
end_time = 110376000 # 3.5 years. If need faster run, then 1 year should be fine
dtmin = 10
dtmax = 5e6
num_steps = 5
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 1.54656e7 1.5552e7'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = Temperature
execute_on = 'initial linear'
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = Temperature
[]
[peak_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = Temperature
[]
[peak_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = Temperature
block = clad
[]
[max_clad_temp]
type = ElementExtremeValue
variable = Temperature
value_type = max
block = clad
[]
[peak_clad_temp]
type = TimeExtremeValue
value_type = max
postprocessor = max_clad_temp
[]
[avg_fuel_temp]
type = ElementAverageValue
variable = Temperature
block = pellet
[]
[max_fuel_temp]
type = ElementExtremeValue
variable = Temperature
value_type = max
block = pellet
[]
[peak_fuel_temp]
type = TimeExtremeValue
value_type = max
postprocessor = max_fuel_temp
[]
[peak_coolant_temperature]
type = ElementExtremeValue
variable = coolant_temperature
value_type = max
block = clad
outputs = all
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[max_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = Temperature
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = Temperature
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = Temperature
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_burnup]
type = ElementExtremeValue
value_type = max
block = pellet
variable = burnup
[]
[min_burnup]
type = ElementExtremeValue
value_type = min
block = pellet
variable = burnup
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
block = pellet
mat_prop = fis_gas_rel
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
block = pellet
mat_prop = fis_gas_prod
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_radial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_xx
[]
[max_fuel_axial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_yy
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 11
[]
[max_fuel_radial_disp]
type = NodalExtremeValue
variable = disp_x
boundary = 10
[]
[engr_strain_fuel_radial]
type = FunctionValuePostprocessor
function = engr_radial_strain_fuel
[]
[engr_strain_fuel_axial]
type = FunctionValuePostprocessor
function = engr_axial_strain_fuel
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 3
[]
[etot_bison]
type = ElementIntegralVariablePostprocessor
block = pellet
variable = energy_density
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
color = true
exodus = true
perf_graph = true
csv = true
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y Temperature'
show_var_residual_norms = true
[]
(examples/metal_fuel/x441_coarse/x441_group_A_nominal.i)
initial_fuel_density = 15800
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.38e-03
pellet_outer_radius = 2.195e-03
pellet_height = 343.0e-3
clad_top_gap_height = 373.0e-3
clad_gap_width = 0.345e-3
bottom_clad_height = 7.9e-3
top_clad_height = 7.9e-3
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 3
ny_p = 40
nx_c = 2
ny_c = 40
ny_cu = 2
ny_cl = 2
pellet_quantity = 1
elem_type = QUAD4
[]
# mesh options
patch_size = 10
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = ParsedFunction
expression = 0.151e6
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 343.0e-3
pellet_y_start = 8.1e-3
[]
[engr_radial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_rad / 2.195e-03'
symbol_values = 'max_fuel_radial_disp'
symbol_names = 'fuel_disp_rad'
[]
[engr_axial_strain_fuel]
type = ParsedFunction
expression = 'fuel_disp_axial / 343.0e-3'
symbol_values = 'max_fuel_elongation'
symbol_names = 'fuel_disp_axial'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx
strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain
solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx
strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_strain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_zz
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductance = 176811.6
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = 2.195e-03
X_Zr = 0.225
X_Pu_function = 0.163
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = 0.225
initial_X_Pu = 0.163
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = 0.225
X_Pu = 0.163
block = pellet
temperature = temp
[]
[fuel_inlastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-2
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 5e17
interconnection_initiating_porosity = 0.29
interconnection_terminating_porosity = 0.31
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = 0.225
X_Pu = 0.163
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
critical_porosity = 0.30
fractional_fgr_initial = 0.4
fractional_fgr_post = 0.8
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_strain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-5
nl_abs_tol = 1e-7
end_time = 1e7
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 6
optimal_iterations = 20
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = -1.53703e-6
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = creep_strain_zz
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_radial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_xx
[]
[max_fuel_axial_strain]
type = ElementExtremeValue
value_type = max
block = pellet
variable = strain_yy
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_fuel_radial_disp]
type = NodalExtremeValue
variable = disp_x
boundary = 'all_pellet_exterior'
[]
[engr_strain_fuel_radial]
type = FunctionValuePostprocessor
function = engr_radial_strain_fuel
[]
[engr_strain_fuel_axial]
type = FunctionValuePostprocessor
function = engr_axial_strain_fuel
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[PerformanceMetricOutputs]
[]
[Outputs]
time_step_interval = 1
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_group_A_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/ad_metallic_fuel_coolant_wastage/cc_wastage_ht9_eff_full_pin.i)
# This test is to verify the calculation for HT9 Coolant Wastage in a simplified pin mesh (non-AD)
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
X_Zr = 0.225
X_Pu = 0.0
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.381e-03
pellet_outer_radius = 2.158e-03
pellet_height = 342.5e-3
clad_top_gap_height = 479.5e-3
clad_gap_width = 0.382e-03
bottom_clad_height = 2.24e-3
top_clad_height = 2.24e-3
clad_bot_gap_height = 0.31e-3
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 1
ny_p = 1
nx_c = 1
ny_c = 20
ny_cu = 1
ny_cl = 1
pellet_quantity = 1
elem_type = QUAD4
[]
patch_size = 20
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1E6 1E7'
y = '0 2E4 3E4'
[]
[pwr_axial_peaking_factors]
type = ConstantFunction
value = 1.0
[]
[pwr_cdf]
type = PiecewiseLinear
axis = y
x = '0 2.55e-3 342.5e-3'
y = '0 0 1'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie_f]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = pellet
density_name = 16000
[]
[heat_ie_c]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = clad
density_name = 7890
[]
[heat_source]
type = FissionRateHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = 1e-6
emissivity_primary = 0
emissivity_secondary = 0
[]
[]
[FluidProperties]
[sodium_uo]
type = SodiumProperties
[]
[]
[BCs]
[convection]
type = ConvectiveHeatFluxBC
variable = temp
boundary = 2
T_infinity = coolant_temperature
heat_transfer_coefficient = coolant_channel_htc
[]
[]
[Materials]
[coolant]
type = SodiumCoolantChannelMaterial
inlet_temperature_function = 648.0
rod_linear_power = power_history
inlet_massflux_function = 2300
axial_power_profile_cdf = pwr_cdf
pellet_height = 3.425e-01
cladding_radius = 2.921e-03
boundary = clad_outside_right
wire_wrap_diameter = 1.067e-03
temperature = temp
sodium_user_object = sodium_uo
htc_model = BGF
update_temperature = true
pin_location = interior
peclet_limit_behavior = error
outputs = all
[]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = pwr_axial_peaking_factors
pellet_radius = 2.158e-3
outputs = all
[]
[burnup]
type = UPuZrBurnup
density = 16000
outputs = all
[]
[cc_wastage_thickness]
type = MetallicFuelCoolantWastage
clad_material = HT9
use_effective_method = true
temperature = temp
boundary = 2
outputs = all
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
spheat_model = savage
thcond_model = lanl
porosity = 0
temperature = temp
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50
variable = temp
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 100
l_tol = 1e-3
nl_max_its = 50
nl_rel_tol = 1e-4
nl_abs_tol = 1e-8
end_time = 1E7
dt = 5E5
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Postprocessors]
[peak_clad_outer_temp]
type = NodalExtremeValue
variable = temp
value_type = max
boundary = 2
outputs = 'console'
[]
[time_max_clad_outer_temp]
type = TimeExtremeValue
postprocessor = peak_clad_outer_temp
outputs = 'console'
[]
[max_wastagethickness]
type = ElementExtremeValue
value_type = max
variable = cc_wastage_thickness
outputs = 'console'
[]
[]
[VectorPostprocessors]
[cc_wastage_profile]
type = SideValueSampler
boundary = 2
sort_by = y
variable = cc_wastage_thickness
[]
[]
[Outputs]
perf_graph = true
console = true
[csv_vec]
type = CSV
file_base = cc_wastage_ht9_eff_full_pin_profile
execute_on = final
[]
[]
(test/tests/zirconium_diffusion/ad_test.i)
# This is an example of an axial slice from the T179 EBR-II X419 experiment,
# which had 61U-16Pu-23Zr atom%, 71U-19Pu-10Zr wt%.
#
# Most importantly, this test shows that the new calculation method for zirconium
# redistribution matches the old method, to a maximum difference of 3e-3.
[Mesh]
coord_type = RZ
[mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 104
ny = 1
xmax = 0.00216
ymax = 2.16e-05
[]
[]
[Variables]
[T]
[]
[zirconium]
initial_condition = 0.22 #initial mole fraction of Zr in the system
scaling = 1e17
[]
[]
[ICs]
[T]
type = FunctionIC
variable = T
function = outer2
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = T
[]
[ie]
type = ADHeatConductionTimeDerivative
variable = T
[]
[ZrDiffusion]
type = ADZirconiumDiffusion
variable = zirconium
temperature = T
[]
[diffusion_ie]
type = ADTimeDerivative
variable = zirconium
[]
[heat_source]
type = ADCoupledForce
variable = T
v = power
[]
[]
[AuxVariables]
[fission_rate]
[]
[power]
[]
[]
[AuxKernels]
[fission_rate_aux]
type = ConstantAux
variable = fission_rate
value = 8.74117559524e+19
[]
[power_aux]
type = ParsedAux
coupled_variables = 'zirconium fission_rate'
constant_names = 'A B epf'
constant_expressions = '-1.12884007 1.24834482 3.2e-11'
expression = 'fission_rate * epf * (A*zirconium + B)'
variable = power
[]
[]
[Functions]
[outer2]
type = ParsedFunction
expression = '918.15-3.2e7*(x*x)' #r^2 initial temperature profile
[]
[]
[BCs]
[temp_rightside]
type = ADDirichletBC
variable = T
boundary = right
value = 818.15
[]
[]
[Materials]
[porosity]
type = ADGenericConstantMaterial
block = 0
prop_names = porosity
prop_values = 0.0
[]
[phase]
type = ADPhaseUPuZr
block = 0
temperature = T
X_Pu = 0.16
X_Zr = zirconium
AB_temp = 936.15
CD_temp = 968.15
[]
[zr_diff]
type = ADZrDiffusivityUPuZr
block = 0
temperature = T
X_Pu = 0.16
X_Zr = zirconium
p_alpha = ${fparse 0.35 / 100}
p_delta = ${fparse 0.35 / 2}
p_beta = ${fparse 0.35 / 55}
p_gamma = ${fparse 0.35 / 2}
D0_scale_alpha = 100.0
D0_scale_delta = 2.0
D0_scale_beta = 55.0
D0_scale_gamma = 2.0
[]
[thermal_upuzr]
type = ADUPuZrThermal
block = 0
temperature = T
X_Pu = 0.16
X_Zr = zirconium
thcond_model = galloway
spheat_model = savage
A_Pu = .244
porosity = porosity
[]
[fuel_density]
type = ADParsedMaterial
block = 0
property_name = density
expression = 10431.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart -pc_type -sub_pc_type -pc_hypre_type'
petsc_options_value = ' 1001 hypre hypre boomeramg'
line_search = 'none'
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-9
nl_abs_tol = 1e-18
l_max_its = 1000
dtmax = 1e5
dtmin = 1e-2
end_time = 1e5
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e3
optimal_iterations = 25
iteration_window = 3
linear_iteration_ratio = 35
[]
[]
[Outputs]
exodus = true
[]
(test/tests/ad_upuzr_thermal/ternary.i)
# This template tests the range of individual models in ADUPuZrThermal.
# The mesh is a ternary diagram in order to provide a full range of zirconium
# plutonium, and uranium atom content. The Z direction provides a temperature
# gradient. Porosity is ramped up and down by the time.
#
# The test can be run with RunApp to ensure an error is not thrown indicating a negative thermal
# conductivity nor negative specific heat is calculated
[Problem]
solve = false
[]
[Mesh]
uniform_refine = 1
[mesh]
type = FileMeshGenerator
file = triangle.e
[]
[]
[AuxVariables]
[temp]
initial_condition = 800.0
[]
[X_Zr]
initial_condition = 0.1
[]
[X_Pu]
initial_condition = 0.1
[]
[]
[AuxKernels]
[temp_aux]
type = FunctionAux
variable = temp
function = '400 + 1100*z'
[]
[zr_aux]
type = FunctionAux
variable = X_Zr
function = '1 - y / sqrt(3) - x'
[]
[pu_aux]
type = FunctionAux
variable = X_Pu
function = 'x - y / sqrt(3)'
[]
[]
[Functions]
[ramp]
type = PiecewiseLinear
x = '0 100 300'
y = '0.25 0.5 0'
[]
[]
[Materials]
[thermal]
type = ADUPuZrThermal
temperature = temp
X_Pu = X_Pu
X_Zr = X_Zr
porosity = porosity
outputs = all
thcond_model = kim
[]
[porosity]
type = ADGenericFunctionMaterial
prop_names = porosity
prop_values = ramp
outputs = all
[]
[]
[Executioner]
type = Transient
end_time = 3
[]
[Postprocessors]
[porosity_avg]
type = ElementAverageValue
variable = porosity
[]
[temp_max]
type = ElementExtremeValue
variable = temp
[]
[temp_min]
type = ElementExtremeValue
variable = temp
value_type = min
[]
[zr_max]
type = ElementExtremeValue
variable = temp
[]
[zr_min]
type = ElementExtremeValue
variable = temp
value_type = min
[]
[thcond_max]
type = ElementExtremeValue
variable = thermal_conductivity
[]
[thcond_min]
type = ElementExtremeValue
variable = thermal_conductivity
value_type = min
[]
[spheat_max]
type = ElementExtremeValue
variable = specific_heat
[]
[spheat_min]
type = ElementExtremeValue
variable = specific_heat
value_type = min
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_G/x441_leg_G.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_swelling'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = MaterialRealAux
variable = porosity
property = porosity
block = pellet
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrain
block = pellet
temperature = temp
# hydrostatic_stress = hydrostatic_stress
hydrostatic_stress = 1e6
eigenstrain_name = fuel_volumetric_swelling
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_legacy_swell
[out2]
type = CSV
file_base = x441_${group_name}_legacy_swell_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_legacy_swell_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_legacy_swell_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_B/x441_1_5D_B.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/x441_base.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress effective_creep_strain volumetric_strain'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain
solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress
hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz
elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy
strain_zz hoop_stress effective_creep_strain hoop_creep_strain
hoop_elastic_strain hoop_strain'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/WPF/analysis/X425_T418/X425_base.i)
# X425 Steady State Irradiation Base Input File
gap_bottom_length = 0.31e-3
top_bot_cladding_height = 2.24e-3
# calculations
cladding_ir = '${fparse fuel_radius + cladding_gap_width}'
gas_plenum_height = '${fparse plenum_volume / pi / cladding_ir^2}'
fuel_y_start = '${fparse gap_bottom_length + top_bot_cladding_height}'
alpha_start = 877
alpha_end = 936
bubble_concentration = 1e15
cladding_block = 'cladding cladding_tri'
# A relatively coarse radial mesh density can be used
# since localized refining is done by TRI3 elements
clad_n_rad = 10
[GlobalParams]
order = FIRST
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
alpha_transition_end = ${alpha_end}
alpha_transition_start = ${alpha_start}
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
# Pin design parameters from FIPD database
[gen]
type = FIPDRodletMeshGenerator
fipd_geom_file = ${raw '../../../../../fipd-bison-integration-data/ ${exp_id} / ${pin_id} / ${pin_id} _design.csv'}
gap_bottom_length = 0.31e-3 # arbitrary
cladding_bottom_plug_length = 2.24e-3 # arbitrary
cladding_top_plug_length = 2.24e-3 # arbitrary
cladding_sidewall_radial_elements = ${clad_n_rad}
cladding_sidewall_axial_element_intervals = '0 0.540 0.625 1.0'
cladding_sidewall_axial_element_numbers = '150 1000 150'
use_tri_for_cladding_sidewall = '0 1 0'
cladding_top_plug_radial_elements = 10
cladding_top_plug_axial_elements = 5
cladding_bottom_plug_axial_elements = 5
fuel_radial_elements = 10
fuel_axial_element_intervals = '0 1'
fuel_axial_element_numbers = '1000'
tri_element_size_factor = 0.4
elem_type = QUAD4
make_stand = true
make_cap = true
cap_axial_elements = 15
stand_axial_elements = 15
[]
[sodium_height]
type = SideSetsFromBoundingBoxGenerator
input = gen
bottom_left = '0 0 0'
top_right = '${fparse cladding_ir + cladding_thickness} ${fparse fuel_y_start + fuel_height} 0'
included_boundaries = 'cladding_inside_right'
boundary_new = '1005'
[]
[gas_height]
type = SideSetsFromBoundingBoxGenerator
input = sodium_height
bottom_left = '0 ${fparse fuel_y_start + fuel_height} 0'
top_right = '${fparse cladding_ir + cladding_thickness} ${fparse fuel_y_start + fuel_height + gas_plenum_height + top_bot_cladding_height} 0'
included_boundaries = 'cladding_inside_right'
boundary_new = '1006'
[]
[sodium_plenum_rename]
type = RenameBoundaryGenerator
input = gas_height
old_boundary = '1005 1006'
new_boundary = 'sodium_height gas_height'
[]
patch_size = 40
patch_update_strategy = always
partitioner = centroid
centroid_partitioner_direction = y
coord_type = RZ
[]
[Variables]
[temp]
initial_condition = 298
block = 'fuel ${cladding_block} cap stand'
[]
[disp_x]
block = 'fuel ${cladding_block} cap stand'
[]
[disp_y]
block = 'fuel ${cladding_block} cap stand'
[]
[]
[Functions]
[fflux_axial_peaking_factors] # Fast flux peaking factor from FIPD database; used for fuel related simulations
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../fipd-bison-integration-data/ ${exp_id} / ${pin_id} /peakingfactor_flux_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
extrapolate_to_zero = true
[]
[fflux_axial_peaking_factors_elongate] # Fast flux peaking factor from FIPD database; used for cladding related simulations
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../fipd-bison-integration-data/ ${exp_id} / ${pin_id} /peakingfactor_flux_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
extrapolate_to_zero = true
fuel_elongation_pp = max_fuel_elongation # pp used to track fuel elongation
[]
[flux_history] # Time-dependent pin average fast flux from FIPD database
type = PiecewiseLinear
data_file = ${raw '../../../../../fipd-bison-integration-data/ ${exp_id} / ${pin_id} /flux_history_ ${pin_id} .csv'}
[]
[clad_od_temp] # Time-dependent cladding OD temperature from FIPD database
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../fipd-bison-integration-data/ ${exp_id} / ${pin_id} /clad_od_temp_history_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
[]
[ab_sodium_vol]
type = MeshPropertyFunction
mesh_generator = gen
mesh_property_name = sodium_volume
scale_factor = -1.0
[]
[sodium_volume]
# Need to account for the factor that hot pressing is also occupying the open pores
type = ParsedFunction
symbol_names = 'porosity_sodium_logging_avg volume_fuel raw_sodium_vol temp_sodium_avg'
symbol_values = 'porosity_sodium_logging_avg volume_fuel ab_sodium_vol temp_sodium_avg'
# Note the the symbol before volume_fuel should be negative as volume_fuel itself is negative
expression = 'raw_sodium_vol * 954 / (1012 - 0.23 * temp_sodium_avg) - volume_fuel * porosity_sodium_logging_avg'
[]
[power_history] # Time-dependent pin average power from FIPD database
type = PiecewiseLinear
data_file = ${raw '../../../../../fipd-bison-integration-data/ ${exp_id} / ${pin_id} /power_history_ ${pin_id} .csv'}
[]
[axial_peaking_factors]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../fipd-bison-integration-data/ ${exp_id} / ${pin_id} /peakingfactor_power_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
[]
[axial_peaking_factors_extended]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../fipd-bison-integration-data/ ${exp_id} / ${pin_id} /peakingfactor_power_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
fuel_elongation_pp = max_fuel_elongation # pp used to track fuel elongation
[]
[anisotropic_swelling_factor]
type = ParsedFunction
symbol_names = 'disp_x_fuel_radial_surface_avg disp_y_fuel_top_surface_avg fuel_height fuel_radius'
symbol_values = 'disp_x_fuel_radial_surface_avg disp_y_fuel_top_surface_avg ${fuel_height} ${fuel_radius}'
expression = '(disp_x_fuel_radial_surface_avg / ${fuel_radius}) / (disp_y_fuel_top_surface_avg / ${fuel_height})'
[]
[gap_thermal_conductivity]
type = ParsedFunction
expression = '124.67 - 0.11381 * t + 5.5226e-5 * t^2 - 1.1842e-8 * t^3'
[]
[id_vpp_func] # vpp_function used to track FCCI-related cladding degradation.
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = id_wastage
argument_column = y
wastage_type = ID
value_column = wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[od_vpp_func] # vpp_function used to track CCCI-related cladding degradation.
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = od_wastage
argument_column = y
wastage_type = OD
value_column = cc_wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[fuel_melt_func]
type = MetallicFuelMeltingFunction
vectorpostprocessor_name = fuel_melting
argument_column = y
value_column = fuel_melting_thickness
use_metadata = true
mesh_generator = 'gen'
transition_width = 2e-4
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = fuel
strain = FINITE
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
eigenstrain_names = 'fuel_thermal_strain solid_swelling_eigenstrain'
use_automatic_differentiation = true
volumetric_locking_correction = true
[]
[cladding]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = '${cladding_block}'
eigenstrain_names = 'cladding_thermal_eigenstrain'
use_automatic_differentiation = true
volumetric_locking_correction = true
[]
[]
[Kernels]
[gravity]
type = ADGravity
block = 'fuel ${cladding_block}'
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = ADHeatConduction
block = 'fuel ${cladding_block} cap stand'
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
block = 'fuel ${cladding_block} cap stand'
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = ADFissionRateHeatSource
variable = temp
block = 'fuel'
fission_rate = fission_rate
extra_vector_tags = 'ref'
energy_deposited_in_fuel = 0.95
[]
[disp_x_dt]
type = ADTimeDerivative
variable = disp_x
block = ' cap stand'
extra_vector_tags = 'ref'
[]
[disp_y_dt]
type = ADTimeDerivative
variable = disp_y
block = 'cap stand'
extra_vector_tags = 'ref'
[]
[disp_x_diff]
type = ADMatAnisoDiffusion
variable = disp_x
block = 'cap stand'
diffusivity = d_x
extra_vector_tags = 'ref'
[]
[disp_y_diff]
type = ADMatDiffusion
variable = disp_y
block = 'cap stand'
diffusivity = 1e8
extra_vector_tags = 'ref'
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_bottom = cladding_outside_bottom
clad_inner_wall = cladding_inside_right
clad_outer_wall = cladding_outside_right
clad_top = cladding_outside_top
pellet_exteriors = fuel_outside_all
[]
[fuel_thm_exp]
type = LayeredAverage
variable = fuel_thermal_strain_xx
direction = y
num_layers = 1000
block = fuel
[]
[clad_thm_exp]
type = LayeredAverage
variable = clad_thermal_eigenstrain_xx
direction = y
num_layers = 1000
block = ${cladding_block}
[]
[]
[Contact]
[fuel_cladding_mechanical]
primary = cladding_inside_right
secondary = fuel_outer_radial_surface
model = coulomb
friction_coefficient = 0.1
formulation = mortar
c_normal = '${fparse 1e17 * magic_factor}'
c_tangential = '${fparse 1e19 * magic_factor}'
correct_edge_dropping = true
[]
[]
[MortarGapHeatTransfer]
[inside2outside]
temperature = temp
boundary = 'cladding_inside_right'
gap_conductivity_function = gap_thermal_conductivity
gap_conductivity_function_variable = temp
primary_boundary = cladding_inside_right
secondary_boundary = fuel_contact_surfaces
gap_flux_options = 'CONDUCTION'
ghost_point_neighbors = true
[]
[]
[BCs]
[no_x_all]
type = ADDirichletBC
variable = disp_x
boundary = 'centerline cap_top'
value = 0.0
preset = false
[]
[no_y_clad]
type = ADDirichletBC
variable = disp_y
boundary = 'cladding_inside_bottom'
value = 0.0
preset = false
[]
[Pressure]
[coolantPressure]
boundary = 'cladding_outside_right'
factor = 0.151e6
use_automatic_differentiation = true
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 'inside_surfaces'
initial_pressure = 84116 # in Pa, 12.2 psi
startup_time = 0
R = 8.3143
temperature = temp_gas_avg
volume = volume_plenum
output = plenum_pressure
material_input = fg_released
use_automatic_differentiation = true
[]
[]
[surf] # Setting temperature BC base on FIPD data
type = ADFunctionDirichletBC
variable = temp
boundary = 'cladding_outside_bottom cladding_outside_right cladding_outside_top'
function = clad_od_temp
[]
[]
[AuxVariables]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[relx]
[]
[clad_thm_exp]
order = CONSTANT
family = MONOMIAL
block = '${cladding_block}'
[]
[clad_thermal_eigenstrain_xx]
order = CONSTANT
family = MONOMIAL
block = '${cladding_block}'
[]
[fuel_thermal_strain_xx]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[fuel_thermal_strain_yy]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[fuel_thm_exp]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[func_val1]
[]
[func_val2]
[]
[func_val3]
[]
# OPTD Dummy during this stage
[pen_thick_aux]
family = MONOMIAL
order = CONSTANT
block = 'fuel ${cladding_block}'
[]
[total_id_reduction]
family = MONOMIAL
order = CONSTANT
block = 'fuel ${cladding_block}'
[]
[fast_neutron_fluence_aux]
order = CONSTANT
family = MONOMIAL
block = '${cladding_block}'
[]
[]
[AuxKernels]
[func_val1]
type = FunctionAux
function = id_vpp_func
variable = func_val1
block = 'cladding cladding_tri'
[]
[func_val2]
type = FunctionAux
function = od_vpp_func
variable = func_val2
block = 'cladding cladding_tri'
[]
[func_val3]
type = FunctionAux
function = fuel_melt_func
variable = func_val3
block = fuel
[]
[cdf_amount]
block = '${cladding_block}'
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[relx_aux]
type = ParsedAux
variable = relx
block = fuel
use_xyzt = true
expression = 'x / ${fuel_radius}'
[]
[clad_thm_exp]
type = SpatialUserObjectAux
variable = clad_thm_exp
execute_on = 'initial timestep_end'
user_object = clad_thm_exp
block = '${cladding_block}'
[]
[clad_thermal_eigenstrain_xx]
type = ADRankTwoAux
rank_two_tensor = cladding_thermal_eigenstrain
variable = clad_thermal_eigenstrain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = '${cladding_block}'
[]
[fuel_thermal_strain_xx]
type = ADRankTwoAux
rank_two_tensor = fuel_thermal_strain
variable = fuel_thermal_strain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = fuel
[]
[fuel_thermal_strain_yy]
type = ADRankTwoAux
rank_two_tensor = fuel_thermal_strain
variable = fuel_thermal_strain_yy
index_j = 1
index_i = 1
execute_on = 'initial timestep_end'
block = fuel
[]
[fuel_thm_exp]
type = SpatialUserObjectAux
variable = fuel_thm_exp
execute_on = 'initial timestep_end'
user_object = fuel_thm_exp
block = fuel
[]
# OPTD
[assign_pen_thick_aux]
type = ADMaterialRealAux
variable = pen_thick_aux
property = liquid_penetration
block = 'fuel ${cladding_block}'
[]
[assign_total_id_reduction]
type = ParsedAux
variable = total_id_reduction
coupled_variables = 'pen_thick_aux wastage_thickness'
expression = 'pen_thick_aux + wastage_thickness'
block = 'fuel ${cladding_block}'
[]
[]
[Materials]
[fuel_pen]
type = ADMetallicFuelLiquidCladdingPenetration
temperature = temp
mesh_generator = gen
fuel_elongation_pp = max_fuel_elongation
liquid_penetration_model = 'ANL_CONSERVATIVE'
fuel_pu = Pu_0
burnup = burnup
outputs = all
calculate_fuel_melting_thickness = true
block = 'fuel ${cladding_block}'
[]
[longHT9_failure]
type = HT9FailureClad
block = '${cladding_block}'
method = cdf_long
temperature = temp
outputs = all
hoop_stress = stress_zz # Since 2D-RZ
[]
[d_x]
type = ADConstantAnisotropicMobility
tensor = '1e3 0 0
0 1e6 0
0 0 0'
M_name = d_x
[]
[cap_thcond]
type = ADGenericConstantMaterial
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '65 1200 830'
block = 'cap stand'
outputs = all
[]
[interconnected_porosity]
type = ADParsedMaterial
block = 'fuel'
property_name = interconnected_porosity
material_property_names = 'porosity interconnectivity'
expression = 'porosity * interconnectivity'
outputs = all
[]
[fission_rate]
type = ADUPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${fuel_radius}
X_Zr = ${initial_X_Zr}
X_Pu_function = ${X_Pu}
block = 'fuel'
outputs = all
[]
[fission_rate_elongate]
type = ADUPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors_extended
pellet_radius = ${fuel_radius}
X_Zr = ${initial_X_Zr}
X_Pu_function = ${X_Pu}
block = '${cladding_block}'
outputs = all
fission_rate_name = fission_rate
[]
[burnup]
type = ADUPuZrBurnup
initial_X_Zr = ${initial_X_Zr}
initial_X_Pu = ${X_Pu}
density = ${fuel_density}
block = 'fuel'
outputs = all
[]
[burnup_elongate]
type = ADUPuZrBurnup
initial_X_Pu = ${X_Pu}
initial_X_Zr = ${initial_X_Zr}
outputs = all
block = '${cladding_block}'
density = ${fuel_density}
burnup_name = burnup
[]
[fuel_elastic_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'hotpress fuel_upuzrcreep gas_swelling'
block = 'fuel'
outputs = all
[]
[hotpress]
type = ADUPuZrHotPressingStressUpdate
block = 'fuel'
outputs = all
surface_energy = 1.6
plenum_pressure = plenum_pressure
porosity_name = porosity
max_inelastic_increment = 1e-1
interconnectivity = interconnectivity
bubble_concentration = ${bubble_concentration}
temperature = temp
creep_model = MFH
fission_rate = fission_rate
atomic_volume = 2.15e-29
porosity_start = 0.01
porosity_end = 0
grain_boundary_D0 = 4e-29
grain_boundary_Q = 0
absolute_tolerance = 1e-9
[]
[porosity]
type = ADPorosityFromStrain
block = 'fuel'
initial_porosity = 1e-10
inelastic_strain = 'combined_inelastic_strain'
outputs = all
[]
[fuel_elasticity_tensor]
type = ADUPuZrElasticityTensor
X_Zr = ${initial_X_Zr}
X_Pu = ${X_Pu}
youngs_model = LANL
block = 'fuel'
temperature = temp
use_old_porosity = true
outputs = all
output_properties = 'youngs_modulus poissons_ratio'
[]
[fuel_upuzrcreep]
type = ADUPuZrCreepUpdate
block = 'fuel'
temperature = temp
porosity = porosity
use_old_porosity = true
max_inelastic_increment = 1e-1
outputs = all
automatic_differentiation_return_mapping = false
[]
[fuel_thermal_expansion]
type = ADUPuZrThermalExpansionEigenstrain
block = 'fuel'
temperature = temp
stress_free_temperature = 298.0
eigenstrain_name = fuel_thermal_strain
outputs = all
thermal_expansion_model = LANL
X_Zr = ${initial_X_Zr}
X_Pu = ${X_Pu}
[]
[gas_swelling]
type = ADSimpleFissionGasViscoplasticityStressUpdate
temperature = temp
outputs = all
block = 'fuel'
bubble_concentration = ${bubble_concentration}
initial_bubble_concentration = ${bubble_concentration}
compute_interconnectivity = true
fission_gas_yield = 0.3017
fission_rate = fission_rate
initial_atoms_per_bubble = 1e-05
initial_bubble_radius = 1e-15
initial_fgm_dissolved = 0
interconnection_cutoff = 0.99
interconnection_initiating_porosity = 0.23
interconnection_terminating_porosity = 0.25
max_inelastic_increment = 1e-2
retained_gas_fraction = 0.25
interconnection_dependent_retained_gas_fraction = 0.5
surface_energy = 1.6
anisotropic_factor = 0.26
initial_porosity = 1e-10
fuel_melting_function = fuel_melt_func
[]
[solid_swelling]
type = ADBurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = 'fuel'
swelling_name = 'solid_swelling'
outputs = all
anisotropic_factor = 0.26
[]
[metal_fuel_thermal]
type = ADUPuZrThermal
block = 'fuel'
X_Zr = ${initial_X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
porosity = porosity
temperature = temp
outputs = all
porosity_model = logged
sodium_logged_porosity = sodium_logged_porosity
[]
[sodium_logging]
type = ADUPuZrSodiumLogging
block = 'fuel'
porosity = porosity
interconnectivity = interconnectivity
sodium_infiltration_fraction = 0.28
outputs = all
[]
[fuel_density]
type = ADStrainAdjustedDensity
block = 'fuel'
strain_free_density = ${fuel_density}
outputs = all
[]
[fast_neutron_flux]
type = ADFastNeutronFlux
calculate_fluence = true
axial_power_profile = fflux_axial_peaking_factors
rod_ave_lin_pow = flux_history
block = fuel
factor = 1.0
outputs = all
[]
[fast_neutron_flux_elongate]
type = ADFastNeutronFlux
calculate_fluence = true
axial_power_profile = fflux_axial_peaking_factors_elongate
rod_ave_lin_pow = flux_history
block = '${cladding_block}'
factor = 1.0
outputs = all
[]
[cladding_elasticity_tensor]
type = ADHT9ElasticityTensor
temperature = temp
block = '${cladding_block}'
outputs = all
id_wastage_degradation_function = id_vpp_func
od_wastage_degradation_function = od_vpp_func
output_properties = 'youngs_modulus poissons_ratio'
[]
[cladding_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'cladding_creep'
block = '${cladding_block}'
outputs = all
[]
[cladding_creep]
type = ADHT9CreepUpdate
block = '${cladding_block}'
temperature = temp
outputs = all
primary_creep_model = MFH
secondary_creep_model = MFH
irradiation_creep_model = MFH
fast_neutron_flux = fast_neutron_flux
[]
[thermal_expansion]
type = ADHT9ThermalExpansionEigenstrain
block = '${cladding_block}'
temperature = temp
stress_free_temperature = 298.0
eigenstrain_name = cladding_thermal_eigenstrain
outputs = all
[]
[cladding_thermal]
type = ADHT9Thermal
block = '${cladding_block}'
temperature = temp
outputs = all
[]
[cladding_density]
type = ADStrainAdjustedDensity
block = '${cladding_block}'
strain_free_density = '${clad_density}'
outputs = all
[]
[wastage_thickness]
type = ADMetallicFuelWastage
method = burnup_ht9_opt
burnup = burnup
temperature = temp
scale_factor = 1
block = '${cladding_block}'
outputs = all
[]
[cc_wastage_thickness]
type = ADMetallicFuelCoolantWastage
clad_material = HT9
use_effective_method = true
temperature = temp
scale_factor = 1
block = '${cladding_block}'
outputs = all
[]
[]
[Dampers]
[disp_x]
type = MaxIncrement
variable = disp_x
max_increment = 1e-4
[]
[disp_y]
type = MaxIncrement
variable = disp_y
max_increment = 1e-3
[]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[vcp]
type = VCP
full = true
primary_variable = 'disp_x disp_y temp'
preconditioner = 'LU'
adaptive_condensation = true
lm_variable = 'fuel_cladding_mechanical_normal_lm fuel_cladding_mechanical_tangential_lm inside2outside_thermal_lm'
is_lm_coupling_diagonal = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount -snes_force_iteration'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-15 1'
line_search = 'none'
snesmf_reuse_base = false
verbose = true
l_max_its = 60
nl_max_its = 20
nl_rel_tol = 1e-7
nl_abs_tol = 1e-9
end_time = ${run_time}
dtmin = 1e-100
dtmax = ${max_time_step}
automatic_scaling = true
compute_scaling_once = false
off_diagonals_in_auto_scaling = true
ignore_variables_for_autoscaling = 'fuel_cladding_mechanical_normal_lm fuel_cladding_mechanical_tangential_lm inside2outside_thermal_lm'
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = time_step_limit
force_step_every_function_point = true
timestep_limiting_function = power_history
dt = 1e2
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
[]
# elemental temperatures
[temp_fuel_avg]
type = ElementAverageValue
variable = temp
block = 'fuel'
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = ElementExtremeValue
variable = temp
block = 'fuel'
[]
[temp_fuel_min]
type = ElementExtremeValue
variable = temp
block = 'fuel'
value_type = min
[]
[temp_cladding_avg]
type = ElementAverageValue
variable = temp
block = '${cladding_block}'
[]
[temp_cladding_max]
type = ElementExtremeValue
variable = temp
block = '${cladding_block}'
[]
[temp_cladding_min]
type = ElementExtremeValue
variable = temp
block = '${cladding_block}'
value_type = min
[]
# boundary temperatures
[temp_gas_avg]
type = SideAverageValue
boundary = 'gas_height cladding_inside_top'
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_sodium_avg]
type = ElementAverageValue
block = 'cap'
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_inside_surfaces_avg]
type = SideAverageValue
boundary = 'inside_surfaces'
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_fuel_centerline_avg]
type = AxisymmetricCenterlineAverageValue
boundary = 'centerline'
variable = temp
[]
[temp_fuel_centerline_max]
type = NodalExtremeValue
boundary = 'centerline'
variable = temp
[]
[temp_fuel_centerline_min]
type = NodalExtremeValue
boundary = 'centerline'
variable = temp
value_type = min
[]
[temp_fuel_surface_avg]
type = SideAverageValue
boundary = 'fuel_outer_radial_surface'
variable = temp
[]
[temp_fuel_surface_max]
type = NodalExtremeValue
boundary = 'fuel_outer_radial_surface'
variable = temp
[]
[temp_fuel_surface_min]
type = NodalExtremeValue
boundary = 'fuel_outer_radial_surface'
variable = temp
value_type = min
[]
[temp_cladding_inside_right_avg]
type = SideAverageValue
boundary = 'cladding_inside_right'
variable = temp
[]
[temp_cladding_inside_right_max]
type = NodalExtremeValue
boundary = 'cladding_inside_right'
variable = temp
[]
[temp_cladding_outside_right_avg]
type = SideAverageValue
boundary = 'cladding_outside_right'
variable = temp
[]
# stresses
[stress_vonmises_fuel_avg]
type = ElementAverageValue
variable = vonmises_stress
block = 'fuel'
[]
[stress_vonmises_fuel_max]
type = ElementExtremeValue
variable = vonmises_stress
block = 'fuel'
[]
[stress_vonmises_fuel_min]
type = ElementExtremeValue
variable = vonmises_stress
value_type = min
block = 'fuel'
[]
[stress_hydro_fuel_avg]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'fuel'
[]
[stress_hydro_fuel_max]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'fuel'
[]
[stress_hydro_fuel_min]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = 'fuel'
[]
[stress_vonmises_cladding_avg]
type = ElementAverageValue
variable = vonmises_stress
block = '${cladding_block}'
[]
[stress_vonmises_cladding_max]
type = ElementExtremeValue
variable = vonmises_stress
block = '${cladding_block}'
[]
[stress_vonmises_cladding_min]
type = ElementExtremeValue
variable = vonmises_stress
value_type = min
block = '${cladding_block}'
[]
[stress_hydro_cladding_avg]
type = ElementAverageValue
variable = hydrostatic_stress
block = '${cladding_block}'
[]
[stress_hydro_cladding_max]
type = ElementExtremeValue
variable = hydrostatic_stress
block = '${cladding_block}'
[]
[stress_hydro_cladding_min]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = '${cladding_block}'
[]
[contact_pressure_max]
type = NodalExtremeValue
variable = fuel_cladding_mechanical_normal_lm
boundary = 'fuel_outer_radial_surface'
[]
# strain information
[strain_solid_swelling_fuel_avg]
type = ElementAverageValue
variable = solid_swelling
block = 'fuel'
[]
[strain_gas_swelling_fuel_avg]
type = ElementAverageValue
variable = effective_fission_gas_strain
block = 'fuel'
[]
[strain_hot_pressing_fuel_avg]
type = ElementAverageValue
variable = effective_hot_pressing_strain
block = 'fuel'
[]
[strain_volumetric_fuel_avg]
type = ElementAverageValue
variable = firstinv_strain
block = 'fuel'
[]
[strain_axial_fuel_avg]
type = ParsedPostprocessor
pp_names = 'disp_y_fuel_top_surface_avg disp_y_fuel_bottom_surface_avg'
expression = '(disp_y_fuel_top_surface_avg - disp_y_fuel_bottom_surface_avg) / ${fuel_height}'
[]
[disp_y_fuel_top_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = 'fuel_top'
[]
[disp_y_fuel_top_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = 'fuel_top'
[]
[disp_y_fuel_bottom_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = 'fuel_bottom'
[]
[disp_y_fuel_bottom_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = 'fuel_bottom'
[]
[disp_x_fuel_radial_surface_max]
type = NodalExtremeValue
variable = disp_x
boundary = 'fuel_outer_radial_surface'
[]
[disp_x_fuel_radial_surface_avg]
type = SideAverageValue
variable = disp_x
boundary = 'fuel_outer_radial_surface'
[]
[disp_x_cladding_interior_max]
type = NodalExtremeValue
variable = disp_x
boundary = 'cladding_inside_right'
[]
[disp_x_cladding_interior_min]
type = NodalExtremeValue
variable = disp_x
boundary = 'cladding_inside_right'
value_type = min
[]
[disp_x_cladding_interior_avg]
type = SideAverageValue
variable = disp_x
boundary = 'cladding_inside_right'
[]
[disp_x_cladding_exterior_max]
type = NodalExtremeValue
variable = disp_x
boundary = 'cladding_outside_right'
[]
[disp_x_cladding_exterior_avg]
type = SideAverageValue
variable = disp_x
boundary = 'cladding_outside_right'
[]
[anisotropic_swelling_factor]
type = FunctionValuePostprocessor
function = anisotropic_swelling_factor
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = fuel_outside_all
[]
# geometric information
[volume_cladding_interior]
type = InternalVolume
boundary = 'cladding_inside_all'
[]
[volume_fuel]
type = InternalVolume
boundary = 'fuel_outside_all'
execute_on = 'initial timestep_end'
[]
[volume_plenum]
type = InternalVolume
boundary = 'inside_surfaces'
execute_on = 'initial timestep_end'
addition = sodium_volume
[]
[plenum_ratio]
type = ParsedPostprocessor
pp_names = 'volume_plenum volume_fuel'
expression = 'volume_plenum / volume_fuel'
execute_on = 'initial timestep_end'
[]
[volume_sodium]
type = FunctionValuePostprocessor
function = sodium_volume
execute_on = 'initial timestep_end'
[]
# energy information
[flux_clad]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = 'cladding_inside_right'
diffusivity = thermal_conductivity
[]
[flux_fuel]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = 'fuel_contact_surfaces'
diffusivity = thermal_conductivity
[]
[power_integral]
type = ADElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = fuel
[]
[linear_heat_generation_rate]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[burnup_avg]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[burnup_max]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fission_rate_avg]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
# fission gas information
[fg_produced]
type = ADElementIntegralMaterialProperty
mat_prop = fgm_produced
block = fuel
[]
[fg_released]
type = ADElementIntegralMaterialProperty
mat_prop = fgm_released
block = fuel
execute_on = 'initial timestep_end'
[]
[fg_percent]
type = FGRPercent
fission_gas_released = fg_released
fission_gas_generated = fg_produced
[]
[interconnected_porosity_fuel_avg]
type = ElementAverageValue
variable = interconnected_porosity
block = fuel
execute_on = 'initial timestep_end'
[]
[porosity_fuel_avg]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[porosity_fuel_max]
type = ElementExtremeValue
variable = porosity
block = fuel
[]
[porosity_fuel_min]
type = ElementExtremeValue
variable = porosity
value_type = min
block = fuel
[]
[porosity_sodium_logging_avg]
type = ElementAverageValue
variable = sodium_logged_porosity
block = fuel
[]
# extras
[actual_time_step_limit]
type = MaterialTimeStepPostprocessor
block = 'fuel ${cladding_block}'
outputs = none
[]
[time_step_limit]
type = ParsedPostprocessor
expression = 'if(actual_time_step_limit > 1e6, 1e6, actual_time_step_limit)'
pp_names = 'actual_time_step_limit'
[]
[max_wastagethickness]
type = ElementExtremeValue
value_type = max
variable = wastage_thickness
# outputs = 'console'
[]
[max_wst_temp]
type = ElementExtremeValue
value_type = max
variable = temp
proxy_variable = wastage_thickness
block = '${cladding_block}'
[]
[max_wst_burnup]
type = ElementExtremeValue
value_type = max
variable = burnup
proxy_variable = wastage_thickness
block = '${cladding_block}'
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[]
[VectorPostprocessors]
[id_wastage]
type = FuelRodLineValueSampler
variable = wastage_thickness
material = 'clad'
fraction = 0.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = csv_wst_a
[]
[id_pen_total]
type = FuelRodLineValueSampler
variable = total_id_reduction
material = 'clad'
fraction = 0.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[od_wastage]
type = FuelRodLineValueSampler
variable = cc_wastage_thickness
material = 'clad'
fraction = 1.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[fuel_melting]
type = FuelRodLineValueSampler
variable = fuel_melting_thickness
material = 'fuel'
fraction = 1.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[]
[PerformanceMetricOutputs]
outputs = 'console'
[]
[Outputs]
print_linear_residuals = true
color = true
perf_graph = true
sync_times = ${time_spots}
[checkpoint]
type = Checkpoint
time_step_interval = 1
[]
[exodus]
type = Exodus
time_step_interval = 500
sync_times = ${time_spots}
enable = false
[]
[console]
type = Console
show = 'time_step_size temp_fuel_avg temp_fuel_centerline_max temp_cladding_avg temp_cladding_max stress_vonmises_fuel_max stress_hydro_fuel_max stress_hydro_fuel_min contact_pressure_max strain_axial_fuel_avg power_integral burnup_avg fission_rate_avg fg_percent porosity_fuel_avg time_step_limit anisotropic_swelling_factor plenum_ratio volume_fuel volume_plenum max_wastagethickness max_cdf'
[]
[csv_wst_a]
type = CSV
sync_only = true
sync_times = ${time_spots_a}
enable = ${enable_a}
execute_postprocessors_on = none
create_latest_symlink = true
[]
[csv_general]
type = CSV
sync_only = true
sync_times = ${time_spots}
enable = true
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_E/x441_leg_E.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_swelling'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = MaterialRealAux
variable = porosity
property = porosity
block = pellet
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrain
block = pellet
temperature = temp
# hydrostatic_stress = hydrostatic_stress
hydrostatic_stress = 1e6
eigenstrain_name = fuel_volumetric_swelling
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_legacy_swell
[out2]
type = CSV
file_base = x441_${group_name}_legacy_swell_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_legacy_swell_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_legacy_swell_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/FBTA/analysis/steady_state/AK181/181193/IFR1_181193.i)
# IFR-1 Pin 181193
# Inspired by BISON IFR-1 Assessment Case and BISON X441 Assessment Case
exp_id = AK181
pin_id = 181193
fipd_submodule_dir = '../../../../../../../fipd-bison-integration-data/'
cladding_ir = '${fparse 0.226*0.5*0.0254}'
cladding_thickness = '${fparse 0.022*0.0254}'
fuel_radius = ${fparse 0.196*0.5*0.0254}
# Fuel length is 6.5 + 36.0 + 6.5 = 49.0 inch
# Which is 0.13265 0.73470 0.13265
reflector_frac = 0.13265
active_frac = 0.73470
transition_frac = 0.001
fuel_intervals = '0 ${fparse reflector_frac-transition_frac} ${reflector_frac} ${fparse reflector_frac+active_frac} ${fparse reflector_frac+active_frac+transition_frac} 1.0'
reflector_height = '${fparse 6.5*0.0254}'
active_fuel_height = '${fparse 36.0*0.0254}'
transition_height = '${fparse reflector_height/reflector_frac*transition_frac}'
clad_plug_thick = 2.24e-3
bot_gap_thick = 0.31e-3
bottom_blanket_start = '${fparse clad_plug_thick+bot_gap_thick}'
bottom_transition_layer_start = '${fparse bottom_blanket_start+reflector_height-transition_height}'
active_fuel_start = '${fparse bottom_blanket_start+reflector_height}'
active_fuel_end = '${fparse active_fuel_start+active_fuel_height}'
top_transition_layer_end = '${fparse active_fuel_end+transition_height}'
top_blanket_end = '${fparse active_fuel_end+reflector_height}'
gas_plenum_height = '${fparse 39.0*0.0254}'
sodium_cap_height = '${fparse 1.0*0.0254}'
time_last = 53611920
max_dt = 1e5
magic_factor = 5e-1 #1.00e-01
A_U = 0.23803 # [kg/mol]
A_Pu = 0.240 # [kg/mol]
A_Zr = 0.091224 # [kg/mol]
W_Pu = 0.19
W_Zr = 0.1
W_U = '${fparse 1 - W_Pu - W_Zr}'
A_tot = '${fparse 1 / (W_U / A_U + W_Pu / A_Pu + W_Zr / A_Zr)}'
X_Pu = '${fparse W_Pu / A_Pu * A_tot}'
fuel_pu = ${X_Pu}
initial_X_Zr = '${fparse W_Zr / A_Zr * A_tot}'
fuel_density = 15.73e3
alpha_start = 877
alpha_end = 936
bubble_concentration = 1e15
cladding_block = 'cladding'
[GlobalParams]
density = ${fuel_density}
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
alpha_transition_end = ${alpha_end}
alpha_transition_start = ${alpha_start}
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
group_variables = 'disp_x disp_y'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
[gen]
type = FIPDRodletMeshGenerator
fipd_geom_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / ${pin_id} _design.csv'}
gap_bottom_length = ${bot_gap_thick}
cladding_bottom_plug_length = ${clad_plug_thick}
cladding_top_plug_length = ${clad_plug_thick}
cladding_sidewall_radial_elements = 10
cladding_sidewall_axial_element_numbers = '2 400 400'
cladding_top_plug_radial_elements = 10
cladding_top_plug_axial_elements = 5
cladding_bottom_plug_axial_elements = 5
fuel_radial_elements = 10
fuel_axial_element_intervals = ${fuel_intervals}
fuel_axial_element_numbers = '30 1 400 1 30'
use_default_cladding_sidewall_axial_element_intervals = true
elem_type = QUAD4
make_stand = true
make_cap = true
cap_axial_elements = 15
stand_axial_elements = 15
[]
# As RodletMeshGenerator does not support axial blankets
# We need to define them ourselves
[upper_blanket]
type = ParsedSubdomainMeshGenerator
input = gen
excluded_subdomains = 'cladding cap stand'
combinatorial_geometry = 'y>=y0'
constant_names = 'y0'
constant_expressions = '${top_transition_layer_end}'
block_id = 11
block_name = 'upper_blanket'
[]
[lower_blanket]
type = ParsedSubdomainMeshGenerator
input = upper_blanket
excluded_subdomains = 'cladding cap stand upper_blanket'
combinatorial_geometry = 'y<=y0'
constant_names = 'y0'
constant_expressions = '${bottom_transition_layer_start}'
block_id = 12
block_name = 'lower_blanket'
[]
[upper_transition]
type = ParsedSubdomainMeshGenerator
input = lower_blanket
excluded_subdomains = 'cladding cap stand upper_blanket'
combinatorial_geometry = 'y>=y0'
constant_names = 'y0'
constant_expressions = '${active_fuel_end}'
block_id = 13
block_name = 'upper_transition'
[]
[lower_transition]
type = ParsedSubdomainMeshGenerator
input = upper_transition
excluded_subdomains = 'cladding cap stand lower_blanket'
combinatorial_geometry = 'y<=y0'
constant_names = 'y0'
constant_expressions = '${active_fuel_start}'
block_id = 14
block_name = 'lower_transition'
[]
[sodium_height]
type = SideSetsFromBoundingBoxGenerator
input = lower_transition
bottom_left = '0 0 0'
top_right = '${fparse cladding_ir + cladding_thickness} ${top_blanket_end} 0'
included_boundaries = 'cladding_inside_right'
boundary_new = '1005'
[]
[gas_height]
type = SideSetsFromBoundingBoxGenerator
input = sodium_height
bottom_left = '0 ${top_blanket_end} 0'
top_right = '${fparse cladding_ir + cladding_thickness} ${fparse top_blanket_end + sodium_cap_height + gas_plenum_height + clad_plug_thick} 0'
included_boundaries = 'cladding_inside_right'
boundary_new = '1006'
[]
[sodium_plenum_rename]
type = RenameBoundaryGenerator
input = gas_height
old_boundary = '1005 1006'
new_boundary = 'sodium_height gas_height'
[]
patch_size = 40
patch_update_strategy = always
partitioner = centroid
centroid_partitioner_direction = y
coord_type = RZ
[]
[Variables]
[temp]
initial_condition = 298
block = 'fuel cladding cap stand upper_blanket lower_blanket upper_transition lower_transition'
[]
[disp_x]
block = 'fuel cladding cap stand upper_blanket lower_blanket upper_transition lower_transition'
[]
[disp_y]
block = 'fuel cladding cap stand upper_blanket lower_blanket upper_transition lower_transition'
[]
[]
[Functions]
# We do not have SE2P data for IFR-1
# [clad_od_temp]
# type = FIPDAxialProfileFunction
# data_file = ${raw 'fipd /clad_od_temp_history_ ${pin_id} .csv'}
# bottom_clad_height = ${clad_plug_thick}
# clad_bottom_gap_height = ${fparse bot_gap_thick+reflector_height}
# fuel_slug_length = ${active_fuel_height}
# []
[coolant_flux_function]
type = PiecewiseLinear
data_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / flow_history_ ${pin_id} .csv'}
[]
[coolant_pressure_function]
# Constant coolant inlet pressure (Pa) taken from [Cabell, 1980].
# From IFR-1 Assessment Case
type = ConstantFunction
value = 1018327
[]
[coolant_T_in_function]
# Sodium coolant inlet temperature (K). See [Porter and Tsai, 2011]
# We would like to always use 633.15 K
type = ConstantFunction
value = 633.15
[]
[ab_sodium_vol]
type = MeshPropertyFunction
mesh_generator = gen
mesh_property_name = sodium_volume
scale_factor = -1.0
[]
[sodium_volume]
type = ParsedFunction
symbol_names = 'porosity_sodium_logging_avg volume_fuel raw_sodium_vol temp_sodium_avg'
symbol_values = 'porosity_sodium_logging_avg volume_fuel ab_sodium_vol temp_sodium_avg'
expression = 'raw_sodium_vol * 954 / (1102 - 0.23 * temp_sodium_avg) - volume_fuel * porosity_sodium_logging_avg'
[]
[power_history]
type = PiecewiseLinear
data_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / power_history_ ${pin_id} .csv'}
[]
[power_history_avg]
type = PiecewiseLinear
data_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / power_history_ ${pin_id} .csv'}
scale_factor = 0.811078523
[]
[pwr_axial_peaking_factors]
type = FIPDAxialProfileFunction
data_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / peakingfactor_power_relative_ ${pin_id} .csv'}
zero_ends = true
data_shift_type = peaking
bottom_clad_height = ${clad_plug_thick}
clad_bottom_gap_height = ${fparse bot_gap_thick+reflector_height}
fuel_slug_length = ${active_fuel_height}
[]
[pwr_axial_peaking_factors_cdf]
type = FIPDAxialProfileFunction
data_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / peakingfactor_power_cdf_relative_ ${pin_id} .csv'}
data_shift_type = peaking
bottom_clad_height = ${clad_plug_thick}
clad_bottom_gap_height = ${fparse bot_gap_thick+reflector_height}
fuel_slug_length = ${active_fuel_height}
[]
[pwr_axial_peaking_factors_elongate]
type = FIPDAxialProfileFunction
data_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / peakingfactor_power_relative_ ${pin_id} .csv'}
zero_ends = true
data_shift_type = peaking
fuel_elongation_pp = max_fuel_elongation
bottom_clad_height = ${clad_plug_thick}
clad_bottom_gap_height = ${fparse bot_gap_thick+reflector_height}
fuel_slug_length = ${active_fuel_height}
[]
[fflux_axial_peaking_factors]
type = FIPDAxialProfileFunction
data_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / peakingfactor_flux_relative_ ${pin_id} .csv'}
zero_ends = true
data_shift_type = peaking
extrapolate_to_zero = true
bottom_clad_height = ${clad_plug_thick}
clad_bottom_gap_height = ${fparse bot_gap_thick+reflector_height}
fuel_slug_length = ${active_fuel_height}
[]
[fflux_axial_peaking_factors_elongate]
type = FIPDAxialProfileFunction
data_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / peakingfactor_flux_relative_ ${pin_id} .csv'}
zero_ends = true
data_shift_type = peaking
extrapolate_to_zero = true
fuel_elongation_pp = max_fuel_elongation
bottom_clad_height = ${clad_plug_thick}
clad_bottom_gap_height = ${fparse bot_gap_thick+reflector_height}
fuel_slug_length = ${active_fuel_height}
[]
[flux_history]
type = PiecewiseLinear
data_file = ${raw ' ${fipd_submodule_dir} / ${exp_id} / ${pin_id} / flux_history_ ${pin_id} .csv'}
[]
[id_vpp_func]
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = id_wastage
argument_column = y
wastage_type = ID
value_column = wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[od_vpp_func]
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = od_wastage
argument_column = y
wastage_type = OD
value_column = cc_wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[anisotropic_swelling_factor]
type = ParsedFunction
symbol_names = 'disp_x_fuel_radial_surface_avg disp_y_fuel_top_surface_avg fuel_height fuel_radius'
symbol_values = 'disp_x_fuel_radial_surface_avg disp_y_fuel_top_surface_avg ${active_fuel_height} ${fuel_radius}'
expression = '(disp_x_fuel_radial_surface_avg / fuel_radius) / (disp_y_fuel_top_surface_avg / fuel_height)'
[]
[gap_thermal_conductivity]
type = ParsedFunction
expression = '124.67 - 0.11381 * t + 5.5226e-5 * t^2 - 1.1842e-8 * t^3'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
add_variables = false
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress '
'hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz '
'elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy '
'strain_zz'
extra_vector_tags = 'ref'
block = 'fuel upper_blanket lower_blanket'
eigenstrain_names = 'fuel_thermal_strain solid_swelling_eigenstrain'
use_automatic_differentiation = true
[]
[]
[Kernels]
[gravity]
type = ADGravity
block = 'fuel cladding upper_blanket lower_blanket'
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = ADHeatConduction
block = 'fuel cladding cap stand upper_blanket lower_blanket upper_transition lower_transition'
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
block = 'fuel cladding cap stand upper_blanket lower_blanket upper_transition lower_transition'
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = ADFissionRateHeatSource
variable = temp
block = 'fuel upper_blanket lower_blanket upper_transition lower_transition'
fission_rate = fission_rate
extra_vector_tags = 'ref'
energy_deposited_in_fuel = 0.95
[]
[disp_x_dt]
type = ADTimeDerivative
variable = disp_x
block = 'cap stand upper_transition lower_transition'
extra_vector_tags = 'ref'
[]
[disp_y_dt]
type = ADTimeDerivative
variable = disp_y
block = 'cap stand upper_transition lower_transition'
extra_vector_tags = 'ref'
[]
[disp_x_diff]
type = ADMatAnisoDiffusion
variable = disp_x
block = 'cap stand upper_transition lower_transition'
diffusivity = d_x
extra_vector_tags = 'ref'
[]
[disp_y_diff]
type = ADMatDiffusion
variable = disp_y
block = 'cap stand upper_transition lower_transition'
diffusivity = 1e8
extra_vector_tags = 'ref'
[]
[]
[UserObjects]
[fuel_thm_exp]
type = LayeredAverage
variable = fuel_thermal_strain_xx
direction = y
num_layers = 1000
block = 'fuel upper_blanket lower_blanket'
[]
[pin_geometry]
type = FuelPinGeometry
clad_bottom = cladding_outside_bottom
clad_inner_wall = cladding_inside_right
clad_outer_wall = cladding_outside_right
clad_top = cladding_outside_top
pellet_exteriors = fuel_outside_all
[]
[clad_thm_exp]
type = LayeredAverage
variable = clad_thermal_eigenstrain_xx
direction = y
num_layers = 1000
block = cladding
[]
[]
[Contact]
[fuel_cladding_mechanical]
primary = cladding_inside_right
secondary = fuel_outer_radial_surface
model = coulomb
friction_coefficient = 0.1
formulation = mortar
c_normal = ${fparse 1e17 * magic_factor}
c_tangential = ${fparse 1e19 * magic_factor}
tangential_lm_scaling = 1.0e-22
normal_lm_scaling = 1.0e-4
correct_edge_dropping = true
[]
[]
[MortarGapHeatTransfer]
[inside2outside]
temperature = temp
primary_emissivity = 0
secondary_emissivity = 0
boundary = 'cladding_inside_right'
gap_conductivity_function = gap_thermal_conductivity
gap_conductivity_function_variable = temp
primary_boundary = cladding_inside_right
secondary_boundary = fuel_contact_surfaces
gap_flux_options = 'CONDUCTION'
thermal_lm_scaling = 1e-4
[]
[]
[BCs]
[no_x_all]
type = ADDirichletBC
variable = disp_x
boundary = 'centerline cap_top'
value = 0.0
preset = false
[]
[no_y_clad]
type = ADDirichletBC
variable = disp_y
boundary = 'cladding_inside_bottom'
value = 0.0
preset = false
[]
[Pressure]
[coolantPressure]
boundary = 'cladding_outside_right'
factor = 0.151e6
use_automatic_differentiation = true
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 'inside_surfaces'
initial_pressure = 84116 # in Pa, 12.2 psi
startup_time = 0
R = 8.3143
temperature = temp_gas_avg
volume = volume_plenum
output = plenum_pressure
material_input = fg_released
use_automatic_differentiation = true
[]
[]
[convection]
type = ConvectiveHeatFluxBC
variable = temp
boundary = cladding_outside_right
T_infinity = coolant_temperature
heat_transfer_coefficient = coolant_channel_htc
[]
[]
[FluidProperties]
[sodium_uo]
type = SodiumProperties
[]
[]
[AuxVariables]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[relx]
[]
[clad_thm_exp]
order = CONSTANT
family = MONOMIAL
block = cladding
[]
[fuel_thermal_strain_xx]
order = CONSTANT
family = MONOMIAL
block = 'fuel upper_blanket lower_blanket'
[]
[fuel_thermal_strain_yy]
order = CONSTANT
family = MONOMIAL
block = 'fuel upper_blanket lower_blanket'
[]
[fuel_thm_exp]
order = CONSTANT
family = MONOMIAL
block = 'fuel upper_blanket lower_blanket'
[]
[clad_thermal_eigenstrain_xx]
order = CONSTANT
family = MONOMIAL
block = cladding
[]
[func_val1]
[]
[func_val2]
[]
[fast_neutron_fluence_aux]
order = CONSTANT
family = MONOMIAL
block = 'cladding'
[]
[]
[AuxKernels]
[func_val1]
type = FunctionAux
function = id_vpp_func
variable = func_val1
block = 'cladding'
[]
[func_val2]
type = FunctionAux
function = od_vpp_func
variable = func_val2
block = 'cladding'
[]
[cdf_amount]
block = cladding
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
execute_on = timestep_end
[]
[relx_aux]
type = ParsedAux
variable = relx
block = 'fuel upper_blanket lower_blanket upper_transition lower_transition'
use_xyzt = true
expression = 'x / ${fuel_radius}'
[]
[clad_thm_exp]
type = SpatialUserObjectAux
variable = clad_thm_exp
execute_on = 'initial timestep_end'
user_object = clad_thm_exp
block = cladding
[]
[clad_thermal_eigenstrain_xx]
type = ADRankTwoAux
rank_two_tensor = cladding_thermal_eigenstrain
variable = clad_thermal_eigenstrain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = cladding
[]
[fuel_thermal_strain_xx]
type = ADRankTwoAux
rank_two_tensor = fuel_thermal_strain
variable = fuel_thermal_strain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = 'fuel upper_blanket lower_blanket'
[]
[fuel_thermal_strain_yy]
type = ADRankTwoAux
rank_two_tensor = fuel_thermal_strain
variable = fuel_thermal_strain_yy
index_j = 1
index_i = 1
execute_on = 'initial timestep_end'
block = 'fuel upper_blanket lower_blanket'
[]
[fuel_thm_exp]
type = SpatialUserObjectAux
variable = fuel_thm_exp
execute_on = 'initial timestep_end'
user_object = fuel_thm_exp
block = 'fuel upper_blanket lower_blanket'
[]
[]
[Materials]
[coolant]
type = SodiumCoolantChannelMaterial
boundary = cladding_outside_right
inlet_temperature_function = coolant_T_in_function
rod_linear_power = power_history_avg
inlet_massflux_function = coolant_flux_function
axial_power_profile_cdf = pwr_axial_peaking_factors_cdf
pellet_height = ${active_fuel_height}
cladding_radius = '${fparse cladding_ir + cladding_thickness}'
wire_wrap_diameter = ${fparse 0.054*0.0254}
temperature = temp
sodium_user_object = sodium_uo
htc_model = BGF
update_temperature = true
pin_location = interior
peclet_limit_behavior = error
outputs = all
[]
[d_x]
type = ADConstantAnisotropicMobility
tensor = '1e3 0 0
0 1e6 0
0 0 0'
M_name = d_x
[]
[cap_thcond]
type = ADGenericConstantMaterial
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '65 1200 830'
block = 'cap stand'
outputs = all
[]
[interconnected_porosity]
type = ADParsedMaterial
property_name = interconnected_porosity
material_property_names = 'porosity interconnectivity'
expression = 'porosity * interconnectivity'
outputs = all
block = 'fuel upper_blanket lower_blanket'
[]
[fission_rate]
type = ADUPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = pwr_axial_peaking_factors
pellet_radius = ${fuel_radius}
X_Zr = ${initial_X_Zr}
X_Pu_function = ${fuel_pu}
block = 'fuel upper_blanket lower_blanket upper_transition lower_transition'
outputs = all
[]
[fission_rate_elongate]
type = ADUPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = pwr_axial_peaking_factors_elongate
pellet_radius = ${fuel_radius}
X_Zr = ${initial_X_Zr}
X_Pu_function = ${fuel_pu}
block = 'cladding'
outputs = all
fission_rate_name = fission_rate
[]
[burnup]
type = ADUPuZrBurnup
initial_X_Zr = ${initial_X_Zr}
initial_X_Pu = ${fuel_pu}
density = ${fuel_density}
block = 'fuel upper_blanket lower_blanket upper_transition lower_transition'
outputs = all
[]
[burnup_elongate]
type = ADUPuZrBurnup
initial_X_Pu = ${fuel_pu}
initial_X_Zr = ${initial_X_Zr}
outputs = all
block = cladding
density = ${fuel_density}
burnup_name = burnup
[]
[fuel_elastic_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'hotpress fuel_upuzrcreep gas_swelling'
block = 'fuel upper_blanket lower_blanket'
outputs = all
[]
[hotpress]
type = ADUPuZrHotPressingStressUpdate
block = 'fuel upper_blanket lower_blanket'
outputs = all
surface_energy = 1.6
plenum_pressure = plenum_pressure
porosity_name = porosity
max_inelastic_increment = 1e-3 #1e-1
interconnectivity = interconnectivity
bubble_concentration = ${bubble_concentration}
temperature = temp
creep_model = MFH
fission_rate = fission_rate
atomic_volume = 2.15e-29
porosity_start = 0.01
porosity_end = 0
grain_boundary_D0 = 4e-29
grain_boundary_Q = 0
absolute_tolerance = 1e-9
[]
[porosity]
type = ADPorosityFromStrain
block = 'fuel upper_blanket lower_blanket'
initial_porosity = 1e-10
inelastic_strain = 'combined_inelastic_strain'
outputs = all
[]
[porosity_transition]
type = ADGenericConstantMaterial
prop_names = 'porosity interconnectivity'
prop_values = '0.0 0.0'
block = 'upper_transition lower_transition'
[]
[fuel_elasticity_tensor]
type = ADUPuZrElasticityTensor
X_Zr = ${initial_X_Zr}
X_Pu = ${fuel_pu}
youngs_model = LANL
block = 'fuel upper_blanket lower_blanket'
temperature = temp
use_old_porosity = true
outputs = all
output_properties = 'youngs_modulus poissons_ratio'
[]
[fuel_upuzrcreep]
type = ADUPuZrCreepUpdate
block = 'fuel upper_blanket lower_blanket'
temperature = temp
porosity = porosity
max_inelastic_increment=1e-1
use_old_porosity = true
automatic_differentiation_return_mapping = false
[]
[fuel_thermal_expansion]
type = ADUPuZrThermalExpansionEigenstrain
block = 'fuel upper_blanket lower_blanket'
temperature = temp
stress_free_temperature = 298.0
eigenstrain_name = fuel_thermal_strain
outputs = all
thermal_expansion_model = LANL
X_Zr = ${initial_X_Zr}
X_Pu = ${fuel_pu}
[]
[gas_swelling]
type = ADSimpleFissionGasViscoplasticityStressUpdate
temperature = temp
outputs = all
block = 'fuel upper_blanket lower_blanket'
bubble_concentration = ${bubble_concentration}
initial_bubble_concentration = ${bubble_concentration}
compute_interconnectivity = true
fission_gas_yield = 0.25
fission_rate = fission_rate
initial_atoms_per_bubble = 1e-05
initial_bubble_radius = 1e-15
initial_fgm_dissolved = 0
interconnection_cutoff = 0.99
interconnection_initiating_porosity = 0.23
interconnection_terminating_porosity = 0.25
max_inelastic_increment = 1e-2
retained_gas_fraction = 0.25
interconnection_dependent_retained_gas_fraction = 0.5
surface_energy = 1.6
anisotropic_factor = 0.26
initial_porosity = 1e-10
[]
[solid_swelling]
type = ADBurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = 'fuel upper_blanket lower_blanket'
swelling_name = 'solid_swelling'
outputs = all
anisotropic_factor = 0.26
[]
[metal_fuel_thermal]
type = ADUPuZrThermal
block = 'fuel upper_blanket lower_blanket upper_transition lower_transition'
X_Zr = ${initial_X_Zr}
X_Pu = ${fuel_pu}
spheat_model = savage
porosity = porosity
temperature = temp
outputs = all
porosity_model = logged
sodium_logged_porosity = sodium_logged_porosity
[]
[sodium_logging]
type = ADUPuZrSodiumLogging
block = 'fuel upper_blanket lower_blanket upper_transition lower_transition'
porosity = porosity
interconnectivity = interconnectivity
sodium_infiltration_fraction = 0.28
outputs = all
[]
[fuel_density]
type = ADStrainAdjustedDensity
strain_free_density = ${fuel_density}
block = 'fuel upper_blanket lower_blanket upper_transition lower_transition'
[]
[fast_neutron_flux]
type = ADFastNeutronFlux
calculate_fluence = true
axial_power_profile = fflux_axial_peaking_factors
rod_ave_lin_pow = flux_history
block = 'fuel upper_blanket lower_blanket upper_transition lower_transition'
factor = 1.0
outputs = all
[]
[fast_neutron_flux_elongate]
type = ADFastNeutronFlux
calculate_fluence = true
axial_power_profile = fflux_axial_peaking_factors_elongate
rod_ave_lin_pow = flux_history
block = cladding
factor = 1.0
outputs = all
[]
[]
[Dampers]
[disp_x]
type = MaxIncrement
variable = disp_x
max_increment = 1e-4
[]
[disp_y]
type = MaxIncrement
variable = disp_y
max_increment = 1e-3
[]
[temp]
type = MaxIncrement
variable = temp
max_increment = 50
[]
[]
[Preconditioning]
[vcp]
type = VCP
full = true
primary_variable = 'disp_x disp_y temp'
preconditioner = 'LU'
adaptive_condensation = true
lm_variable = 'fuel_cladding_mechanical_normal_lm fuel_cladding_mechanical_tangential_lm inside2outside_thermal_lm'
is_lm_coupling_diagonal = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount -snes_force_iteration'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-15 1'
line_search = 'none'
snesmf_reuse_base = false
verbose = true
l_max_its = 60
nl_max_its = 30
nl_rel_tol = 1e-4 #5e-6
nl_abs_tol = 1e-8 #5e-9
end_time = ${time_last}
dtmin = 1
dtmax = ${max_dt}
automatic_scaling = true
compute_scaling_once = false
off_diagonals_in_auto_scaling = true
ignore_variables_for_autoscaling = 'fuel_cladding_mechanical_normal_lm fuel_cladding_mechanical_tangential_lm inside2outside_thermal_lm'
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_function = power_history
dt = 100
iteration_window = 4
optimal_iterations = 20
force_step_every_function_point = true
timestep_limiting_postprocessor = creep_timestep
[]
[]
[Postprocessors]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = 'fuel cladding'
[]
[_dt]
type=TimestepSize
[]
# elemental temperatures
[temp_fuel_avg]
type = ElementAverageValue
variable = temp
block = 'fuel'
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = ElementExtremeValue
variable = temp
block = 'fuel'
[]
[temp_fuel_min]
type = ElementExtremeValue
variable = temp
block = 'fuel'
value_type = min
[]
[temp_cladding_avg]
type = ElementAverageValue
variable = temp
block = 'cladding'
[]
[temp_cladding_max]
type = ElementExtremeValue
variable = temp
block = 'cladding'
[]
[temp_cladding_min]
type = ElementExtremeValue
variable = temp
block = 'cladding'
value_type = min
[]
# boundary temperatures
[temp_gas_avg]
type = SideAverageValue
boundary = 'gas_height cladding_inside_top'
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_sodium_avg]
type = SideAverageValue
boundary = 'sodium_height fuel_bottom cladding_inside_bottom fuel_top'
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_inside_surfaces_avg]
type = SideAverageValue
boundary = 'inside_surfaces'
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_fuel_centerline_avg]
type = AxisymmetricCenterlineAverageValue
boundary = 'centerline'
variable = temp
[]
[temp_fuel_centerline_max]
type = NodalExtremeValue
boundary = 'centerline'
variable = temp
[]
[temp_fuel_centerline_min]
type = NodalExtremeValue
boundary = 'centerline'
variable = temp
value_type = min
[]
[temp_fuel_surface_avg]
type = SideAverageValue
boundary = 'fuel_outer_radial_surface'
variable = temp
[]
[temp_fuel_surface_max]
type = NodalExtremeValue
boundary = 'fuel_outer_radial_surface'
variable = temp
[]
[temp_fuel_surface_min]
type = NodalExtremeValue
boundary = 'fuel_outer_radial_surface'
variable = temp
value_type = min
[]
[temp_cladding_inside_right_avg]
type = SideAverageValue
boundary = 'cladding_inside_right'
variable = temp
[]
[temp_cladding_inside_right_max]
type = NodalExtremeValue
boundary = 'cladding_inside_right'
variable = temp
[]
[temp_cladding_outside_right_avg]
type = SideAverageValue
boundary = 'cladding_outside_right'
variable = temp
[]
# stresses
[stress_vonmises_fuel_avg]
type = ElementAverageValue
variable = vonmises_stress
block = 'fuel'
[]
[stress_vonmises_fuel_max]
type = ElementExtremeValue
variable = vonmises_stress
block = 'fuel'
[]
[stress_vonmises_fuel_min]
type = ElementExtremeValue
variable = vonmises_stress
value_type = min
block = 'fuel'
[]
[stress_hydro_fuel_avg]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'fuel'
[]
[stress_hydro_fuel_max]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'fuel'
[]
[stress_hydro_fuel_min]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = 'fuel'
[]
[stress_vonmises_cladding_avg]
type = ElementAverageValue
variable = vonmises_stress
block = 'cladding'
[]
[stress_vonmises_cladding_max]
type = ElementExtremeValue
variable = vonmises_stress
block = 'cladding'
[]
[stress_vonmises_cladding_min]
type = ElementExtremeValue
variable = vonmises_stress
value_type = min
block = 'cladding'
[]
[stress_hydro_cladding_avg]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'cladding'
[]
[stress_hydro_cladding_max]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'cladding'
[]
[stress_hydro_cladding_min]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = 'cladding'
[]
# strain information
[strain_solid_swelling_fuel_avg]
type = ElementAverageValue
variable = solid_swelling
block = 'fuel'
[]
[strain_gas_swelling_fuel_avg]
type = ElementAverageValue
variable = effective_fission_gas_strain
block = 'fuel'
[]
[strain_hot_pressing_fuel_avg]
type = ElementAverageValue
variable = effective_hot_pressing_strain
block = 'fuel'
[]
[strain_volumetric_fuel_avg]
type = ElementAverageValue
variable = firstinv_strain
block = 'fuel'
[]
[strain_axial_fuel_avg]
type = ParsedPostprocessor
pp_names = 'disp_y_fuel_top_surface_avg disp_y_fuel_bottom_surface_avg'
expression = '(disp_y_fuel_top_surface_avg - disp_y_fuel_bottom_surface_avg) / ${active_fuel_height}'
[]
[disp_y_fuel_top_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = 'fuel_top'
[]
[disp_y_fuel_top_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = 'fuel_top'
[]
[disp_y_fuel_bottom_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = 'fuel_bottom'
[]
[disp_y_fuel_bottom_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = 'fuel_bottom'
[]
[disp_x_fuel_radial_surface_max]
type = NodalExtremeValue
variable = disp_x
boundary = 'fuel_outer_radial_surface'
[]
[disp_x_fuel_radial_surface_avg]
type = SideAverageValue
variable = disp_x
boundary = 'fuel_outer_radial_surface'
[]
[disp_x_cladding_interior_max]
type = NodalExtremeValue
variable = disp_x
boundary = 'cladding_inside_right'
[]
[disp_x_cladding_interior_min]
type = NodalExtremeValue
variable = disp_x
boundary = 'cladding_inside_right'
value_type = min
[]
[disp_x_cladding_interior_avg]
type = SideAverageValue
variable = disp_x
boundary = 'cladding_inside_right'
[]
[disp_x_cladding_exterior_max]
type = NodalExtremeValue
variable = disp_x
boundary = 'cladding_outside_right'
[]
[disp_x_cladding_exterior_avg]
type = SideAverageValue
variable = disp_x
boundary = 'cladding_outside_right'
[]
[anisotropic_swelling_factor]
type = FunctionValuePostprocessor
function = anisotropic_swelling_factor
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = fuel_outside_all
[]
# geometric information
[volume_cladding_interior]
type = InternalVolume
boundary = 'cladding_inside_all'
[]
[volume_fuel]
type = InternalVolume
boundary = 'fuel_outside_all'
execute_on = 'initial timestep_end'
[]
[volume_plenum]
type = InternalVolume
boundary = 'inside_surfaces'
execute_on = 'initial timestep_end'
addition = sodium_volume
[]
[plenum_ratio]
type = ParsedPostprocessor
pp_names = 'volume_plenum volume_fuel'
expression = 'volume_plenum / volume_fuel'
execute_on = 'initial timestep_end'
[]
[volume_sodium]
type = FunctionValuePostprocessor
function = sodium_volume
execute_on = 'initial timestep_end'
[]
# energy information
[flux_clad]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = 'cladding_inside_right'
diffusivity = thermal_conductivity
[]
[flux_fuel]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = 'fuel_contact_surfaces'
diffusivity = thermal_conductivity
[]
[power_integral]
type = ADElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = fuel
[]
[linear_heat_generation_rate]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[burnup_avg]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[burnup_max]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fission_rate_avg]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
# fission gas information
[fg_produced]
type = ADElementIntegralMaterialProperty
mat_prop = fgm_produced
block = fuel
[]
[fg_released]
type = ADElementIntegralMaterialProperty
mat_prop = fgm_released
block = fuel
execute_on = 'initial timestep_end'
[]
[fg_percent]
type = FGRPercent
fission_gas_released = fg_released
fission_gas_generated = fg_produced
[]
[interconnected_porosity_fuel_avg]
type = ElementAverageValue
variable = interconnected_porosity
block = fuel
execute_on = 'initial timestep_end'
[]
[porosity_fuel_avg]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[porosity_fuel_max]
type = ElementExtremeValue
variable = porosity
block = fuel
[]
[porosity_fuel_min]
type = ElementExtremeValue
variable = porosity
value_type = min
block = fuel
[]
[porosity_sodium_logging_avg]
type = ElementAverageValue
variable = sodium_logged_porosity
block = fuel
[]
# extras
[actual_time_step_limit]
type = MaterialTimeStepPostprocessor
block = 'fuel cladding'
outputs = none
[]
[time_step_limit]
type = ParsedPostprocessor
expression = 'if(actual_time_step_limit > 1e6, 1e6, actual_time_step_limit)'
pp_names = 'actual_time_step_limit'
[]
[max_wastagethickness]
type = ElementExtremeValue
value_type = max
variable = wastage_thickness
[]
[max_wst_temp]
type=ElementExtremeValue
value_type=max
variable=temp
proxy_variable=wastage_thickness
block='cladding'
[]
[max_wst_burnup]
type=ElementExtremeValue
value_type=max
variable=burnup
proxy_variable=wastage_thickness
block='cladding'
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[]
[VectorPostprocessors]
[id_wastage]
type = FuelRodLineValueSampler
variable = wastage_thickness
material = 'clad'
fraction = 0.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[od_wastage]
type = FuelRodLineValueSampler
variable = cc_wastage_thickness
material = 'clad'
fraction = 1.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[]
[Outputs]
perf_graph = true
color = true
[console]
type = Console
max_rows = 25
[]
[csv_general]
type = CSV
execute_on = FINAL
[]
[exodus]
type = Exodus
enable = false
additional_execute_on = 'FAILED'
[]
[params_exodus_final]
type = Exodus
execute_on = 'FINAL'
[]
[]
!include d9_clad_base.i
(assessment/metallic_fuel/EBRII/X441/analysis/group_B/x441_grp_B.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_C/x441_1_5D_C.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_F/x441_leg_F.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_swelling'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = MaterialRealAux
variable = porosity
property = porosity
block = pellet
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrain
block = pellet
temperature = temp
# hydrostatic_stress = hydrostatic_stress
hydrostatic_stress = 1e6
eigenstrain_name = fuel_volumetric_swelling
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_legacy_swell
[out2]
type = CSV
file_base = x441_${group_name}_legacy_swell_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_legacy_swell_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_legacy_swell_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/ad_upuzr_thermal/porosity_corrections_old_porosity.i)
[Problem]
solve = false
[]
[GlobalParams]
temperature = temp
X_Pu = 0
X_Zr = 0
thcond_model = constant
spheat_model = constant
thermal_conductivity = 1
specific_heat = 1
[]
[Mesh]
[mesh]
type = CartesianMeshGenerator
dim = 1
dx = '1 1 1 1'
ix = '1 1 1 1'
subdomain_id = '0 1 2 3'
[]
[]
[AuxVariables]
[temp]
initial_condition = 800.0
[]
[]
[AuxKernels]
[temp_aux]
type = FunctionAux
variable = temp
function = '25 * t + 800'
[]
[]
[Functions]
[porosity_fcn]
type = ParsedFunction
expression = 't / 25'
[]
[porosity_old_fcn]
type = ParsedFunction
expression = 'if (t > 0, (t - 1) / 25, 0)'
[]
[fractional_exact]
type = ParsedFunction
symbol_names = 'porosity_old'
symbol_values = 'porosity_old'
expression = '(1.0 - porosity_old) / (1.0 + 2 * porosity_old)'
[]
[power_exact]
type = ParsedFunction
symbol_names = 'porosity_old'
symbol_values = 'porosity_old'
expression = '(1.0 - porosity_old)^(1.5 * 2)'
[]
[logged_exact]
type = ParsedFunction
symbol_names = 'porosity logged_porosity temp'
symbol_values = 'porosity_old logged_porosity_old temp'
expression = 'pgas := porosity - logged_porosity;
kNa := 124.67 - 0.11381 * temp + 5.5226e-5 * temp^2 - 1.1842e-8 * temp^3;
f := 3.0 * (1.0 - kNa) / (2.0 / 1.72 + (3.0 - 2.0 / 1.72) * kNa) * logged_porosity / (1.0 - pgas);
(1.0 - f) * (1.0 - pgas)^(1.5)'
[]
[]
[Materials]
[porosity]
type = ADGenericFunctionMaterial
prop_names = porosity
prop_values = porosity_fcn
outputs = all
[]
[porosity_old]
type = ADGenericFunctionMaterial
prop_names = porosity_old
prop_values = porosity_old_fcn
outputs = all
[]
[sodium]
type = ADParsedMaterial
property_name = logged_porosity
material_property_names = porosity
expression = 'if (porosity < 0.2, 0, porosity - 0.2)'
outputs = all
[]
[sodium_old]
type = ADParsedMaterial
property_name = logged_porosity_old
material_property_names = porosity_old
expression = 'if (porosity_old < 0.2, 0, porosity_old - 0.2)'
outputs = all
[]
[thcond_none]
type = ADUPuZrThermal
porosity_model = none
outputs = all
block = 0
[]
[thcond_fractional]
type = ADUPuZrThermal
porosity_model = fractional
porosity = porosity
use_old_porosity = true
porosity_factor = 2
outputs = all
block = 1
[]
[thcond_power]
type = ADUPuZrThermal
porosity_model = power
porosity = porosity
use_old_porosity = true
outputs = all
porosity_factor = 2
block = 2
[]
[thcond_logged]
type = ADUPuZrThermal
porosity_model = logged
porosity = porosity
use_old_porosity = true
sodium_logged_porosity = logged_porosity
outputs = all
block = 3
[]
[]
[Executioner]
type = Transient
num_steps = 10
[]
[Postprocessors]
[temp]
type = ElementAverageValue
variable = temp
outputs = none
[]
[porosity]
type = ElementAverageValue
variable = porosity
outputs = none
[]
[porosity_old]
type = ElementAverageValue
variable = porosity_old
outputs = none
[]
[logged_porosity]
type = ElementAverageValue
variable = logged_porosity
outputs = none
[]
[logged_porosity_old]
type = ElementAverageValue
variable = logged_porosity_old
outputs = none
[]
[none_avg]
type = ElementAverageValue
variable = thermal_conductivity
block = 0
outputs = none
[]
[fractional_avg]
type = ElementAverageValue
variable = thermal_conductivity
block = 1
outputs = none
[]
[power_avg]
type = ElementAverageValue
variable = thermal_conductivity
block = 2
outputs = none
[]
[logged_avg]
type = ElementAverageValue
variable = thermal_conductivity
block = 3
outputs = none
[]
[fractional_exact]
type = FunctionValuePostprocessor
function = fractional_exact
outputs = none
[]
[power_exact]
type = FunctionValuePostprocessor
function = power_exact
outputs = none
[]
[logged_exact]
type = FunctionValuePostprocessor
function = logged_exact
outputs = none
[]
[none_diff]
type = DifferencePostprocessor
value1 = 1
value2 = none_avg
[]
[fractional_diff]
type = DifferencePostprocessor
value1 = fractional_exact
value2 = fractional_avg
[]
[power_diff]
type = DifferencePostprocessor
value1 = power_exact
value2 = power_avg
[]
[logged_diff]
type = DifferencePostprocessor
value1 = logged_exact
value2 = logged_avg
[]
[specific_heat]
type = ElementAverageValue
variable = specific_heat
[]
[]
[Outputs]
csv = true
[]
(assessment/metallic_fuel/WPF/analysis/FM-1/FM_base.i)
# FM-1 Base Input File
gap_bottom_length = 0.31e-3
top_bot_cladding_height = 2.24e-3
# calculations
cladding_ir = '${fparse fuel_radius + cladding_gap_width}'
gas_plenum_height = '${fparse plenum_volume / pi / cladding_ir^2}'
fuel_y_start = '${fparse gap_bottom_length + top_bot_cladding_height}'
alpha_start = 877
alpha_end = 936
bubble_concentration = 1e15
cladding_block = 'cladding cladding_tri'
y_tc1 = '${fparse 2.55e-3+22.0*0.0254}'
y_tc2 = '${fparse y_tc1-4.5*0.0254}'
y_tc3 = '${fparse y_tc2-3.5*0.0254}'
y_tc4 = '${fparse y_tc3-2.0*0.0254}'
y_tc5 = '${fparse y_tc4-3.0*0.0254}'
y_tc6 = '${fparse y_tc1-4.0*0.0254}'
x_tc = 0.002920
p_tc1 = '${x_tc} ${y_tc1} 0.0'
p_tc2 = '${x_tc} ${y_tc2} 0.0'
p_tc3 = '${x_tc} ${y_tc3} 0.0'
p_tc4 = '${x_tc} ${y_tc4} 0.0'
p_tc5 = '${x_tc} ${y_tc5} 0.0'
p_tc6 = '${x_tc} ${y_tc6} 0.0'
# A relatively coarse radial mesh density can be used
# since localized refining is done by TRI3 elements
clad_n_rad = 10
[GlobalParams]
order = FIRST
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x disp_y'
alpha_transition_end = ${alpha_end}
alpha_transition_start = ${alpha_start}
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
converge_on = 'disp_x disp_y temp'
[]
[Mesh]
# Pin design parameters from FIPD database
[gen]
type = FIPDRodletMeshGenerator
fipd_geom_file = ${raw '../../../../../fipd-bison-integration-data/ ${exp_id} / ${pin_id} / ${pin_id} _design.csv'}
gap_bottom_length = 0.31e-3 # arbitrary
cladding_bottom_plug_length = 2.24e-3 # arbitrary
cladding_top_plug_length = 2.24e-3 # arbitrary
cladding_sidewall_radial_elements = ${clad_n_rad}
cladding_sidewall_axial_element_intervals = '0 0.540 0.625 1.0'
cladding_sidewall_axial_element_numbers = '150 1000 150'
use_tri_for_cladding_sidewall = '0 1 0'
cladding_top_plug_radial_elements = 10
cladding_top_plug_axial_elements = 5
cladding_bottom_plug_axial_elements = 5
fuel_radial_elements = 10
fuel_axial_element_intervals = '0 1'
fuel_axial_element_numbers = '1000'
tri_element_size_factor = 0.4
elem_type = QUAD4
make_stand = true
make_cap = true
cap_axial_elements = 15
stand_axial_elements = 15
[]
[sodium_height]
type = SideSetsFromBoundingBoxGenerator
input = gen
bottom_left = '0 0 0'
top_right = '${fparse cladding_ir + cladding_thickness} ${fparse fuel_y_start + fuel_height} 0'
included_boundaries = 'cladding_inside_right'
boundary_new = '1005'
[]
[gas_height]
type = SideSetsFromBoundingBoxGenerator
input = sodium_height
bottom_left = '0 ${fparse fuel_y_start + fuel_height} 0'
top_right = '${fparse cladding_ir + cladding_thickness} ${fparse fuel_y_start + fuel_height + gas_plenum_height + top_bot_cladding_height} 0'
included_boundaries = 'cladding_inside_right'
boundary_new = '1006'
[]
[sodium_plenum_rename]
type = RenameBoundaryGenerator
input = gas_height
old_boundary = '1005 1006'
new_boundary = 'sodium_height gas_height'
[]
patch_size = 40
patch_update_strategy = always
partitioner = centroid
centroid_partitioner_direction = y
coord_type = RZ
[]
[Variables]
[temp]
initial_condition = 298
block = 'fuel ${cladding_block} cap stand'
[]
[disp_x]
block = 'fuel ${cladding_block} cap stand'
[]
[disp_y]
block = 'fuel ${cladding_block} cap stand'
[]
[]
[Functions]
[fflux_axial_peaking_factors]
type = ConstantFunction
value = 0.0
[]
[fflux_axial_peaking_factors_elongate]
type = ConstantFunction
value = 0.0
[]
[flux_history] # Time-dependent pin average fast flux from FIPD database
type = ConstantFunction
value = 0.0
[]
[clad_od_temp]
type = PiecewiseBilinear
data_file = './data/temp_hist.csv'
xaxis = 1
[]
[ab_sodium_vol]
type = MeshPropertyFunction
mesh_generator = gen
mesh_property_name = sodium_volume
scale_factor = -1.0
[]
[sodium_volume]
# Need to account for the factor that hot pressing is also occupying the open pores
type = ParsedFunction
symbol_names = 'porosity_sodium_logging_avg volume_fuel raw_sodium_vol temp_sodium_avg'
symbol_values = 'porosity_sodium_logging_avg volume_fuel ab_sodium_vol temp_sodium_avg'
# Note the the symbol before volume_fuel should be negative as volume_fuel itself is negative
expression = 'raw_sodium_vol * 954 / (1012 - 0.23 * temp_sodium_avg) - volume_fuel * porosity_sodium_logging_avg'
[]
[power_history]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors]
type = ConstantFunction
value = 0.0
[]
[axial_peaking_factors_extended]
type = ConstantFunction
value = 0.0
[]
[anisotropic_swelling_factor]
type = ParsedFunction
symbol_names = 'disp_x_fuel_radial_surface_avg disp_y_fuel_top_surface_avg fuel_height fuel_radius'
symbol_values = 'disp_x_fuel_radial_surface_avg disp_y_fuel_top_surface_avg ${fuel_height} ${fuel_radius}'
expression = '(disp_x_fuel_radial_surface_avg / ${fuel_radius}) / (disp_y_fuel_top_surface_avg / ${fuel_height})'
[]
[gap_thermal_conductivity]
type = ParsedFunction
expression = '124.67 - 0.11381 * t + 5.5226e-5 * t^2 - 1.1842e-8 * t^3'
[]
[id_vpp_func] # vpp_function used to track FCCI-related cladding degradation.
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = id_pen_total
argument_column = y
wastage_type = ID
value_column = total_id_reduction
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[od_vpp_func] # vpp_function used to track CCCI-related cladding degradation.
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = od_wastage
argument_column = y
wastage_type = OD
value_column = cc_wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[fuel_melt_func]
type = MetallicFuelMeltingFunction
vectorpostprocessor_name = fuel_melting
argument_column = y
value_column = fuel_melting_thickness
use_metadata = true
mesh_generator = 'gen'
transition_width = 2e-4
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
block = fuel
strain = FINITE
generate_output = 'firstinv_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
eigenstrain_names = 'fuel_thermal_strain solid_swelling_eigenstrain'
use_automatic_differentiation = true
volumetric_locking_correction = true
[]
[cladding]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = '${cladding_block}'
eigenstrain_names = 'cladding_thermal_eigenstrain'
use_automatic_differentiation = true
volumetric_locking_correction = true
[]
[]
[Kernels]
[gravity]
type = ADGravity
block = 'fuel ${cladding_block}'
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = ADHeatConduction
block = 'fuel ${cladding_block} cap stand'
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = ADHeatConductionTimeDerivative
block = 'fuel ${cladding_block} cap stand'
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = ADFissionRateHeatSource
variable = temp
block = 'fuel'
fission_rate = fission_rate
extra_vector_tags = 'ref'
energy_deposited_in_fuel = 0.95
[]
[disp_x_dt]
type = ADTimeDerivative
variable = disp_x
block = ' cap stand'
extra_vector_tags = 'ref'
[]
[disp_y_dt]
type = ADTimeDerivative
variable = disp_y
block = 'cap stand'
extra_vector_tags = 'ref'
[]
[disp_x_diff]
type = ADMatAnisoDiffusion
variable = disp_x
block = 'cap stand'
diffusivity = d_x
extra_vector_tags = 'ref'
[]
[disp_y_diff]
type = ADMatDiffusion
variable = disp_y
block = 'cap stand'
diffusivity = 1e8
extra_vector_tags = 'ref'
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_bottom = cladding_outside_bottom
clad_inner_wall = cladding_inside_right
clad_outer_wall = cladding_outside_right
clad_top = cladding_outside_top
pellet_exteriors = fuel_outside_all
[]
[fuel_thm_exp]
type = LayeredAverage
variable = fuel_thermal_strain_xx
direction = y
num_layers = 1000
block = fuel
[]
[clad_thm_exp]
type = LayeredAverage
variable = clad_thermal_eigenstrain_xx
direction = y
num_layers = 1000
block = ${cladding_block}
[]
[]
[Contact]
[fuel_cladding_mechanical]
primary = cladding_inside_right
secondary = fuel_outer_radial_surface
model = coulomb
friction_coefficient = 0.1
formulation = mortar
c_normal = '${fparse 1e17 * magic_factor}'
c_tangential = '${fparse 1e19 * magic_factor}'
correct_edge_dropping = true
[]
[]
[MortarGapHeatTransfer]
[inside2outside]
temperature = temp
boundary = 'cladding_inside_right'
gap_conductivity_function = gap_thermal_conductivity
gap_conductivity_function_variable = temp
primary_boundary = cladding_inside_right
secondary_boundary = fuel_contact_surfaces
gap_flux_options = 'CONDUCTION'
ghost_point_neighbors = true
[]
[]
[BCs]
[no_x_all]
type = ADDirichletBC
variable = disp_x
boundary = 'centerline cap_top'
value = 0.0
preset = false
[]
[no_y_clad]
type = ADDirichletBC
variable = disp_y
boundary = 'cladding_inside_bottom'
value = 0.0
preset = false
[]
[Pressure]
[coolantPressure]
boundary = 'cladding_outside_right'
factor = 1378.95 # in Pa, 0.2 psia as measured by transducer
use_automatic_differentiation = true
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 'inside_surfaces'
initial_pressure = 84116 # in Pa, 12.2 psi
startup_time = 0
R = 8.3143
temperature = temp_gas_avg
volume = volume_plenum
output = plenum_pressure
material_input = fg_released
use_automatic_differentiation = true
[]
[]
[surf] # Setting temperature BC base on FIPD data
type = ADFunctionDirichletBC
variable = temp
boundary = 'cladding_outside_bottom cladding_outside_right cladding_outside_top'
function = clad_od_temp
[]
[]
[AuxVariables]
[dummy_hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[relx]
[]
[clad_thm_exp]
order = CONSTANT
family = MONOMIAL
block = '${cladding_block}'
[]
[clad_thermal_eigenstrain_xx]
order = CONSTANT
family = MONOMIAL
block = '${cladding_block}'
[]
[fuel_thermal_strain_xx]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[fuel_thermal_strain_yy]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[fuel_thm_exp]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[func_val1]
[]
[func_val2]
[]
[func_val3]
[]
# OPTD Active during this stage
[pen_thick_aux]
family = MONOMIAL
order = CONSTANT
block = 'fuel ${cladding_block}'
[]
[total_id_reduction]
family = MONOMIAL
order = CONSTANT
block = 'fuel ${cladding_block}'
[]
[fast_neutron_fluence_aux]
order = CONSTANT
family = MONOMIAL
block = '${cladding_block}'
[]
[]
[AuxKernels]
[func_val1]
type = FunctionAux
function = id_vpp_func
variable = func_val1
block = 'cladding cladding_tri'
[]
[func_val2]
type = FunctionAux
function = od_vpp_func
variable = func_val2
block = 'cladding cladding_tri'
[]
[func_val3]
type = FunctionAux
function = fuel_melt_func
variable = func_val3
block = fuel
[]
[cdf_amount]
block = '${cladding_block}'
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[relx_aux]
type = ParsedAux
variable = relx
block = fuel
use_xyzt = true
expression = 'x / ${fuel_radius}'
[]
[clad_thm_exp]
type = SpatialUserObjectAux
variable = clad_thm_exp
execute_on = 'initial timestep_end'
user_object = clad_thm_exp
block = '${cladding_block}'
[]
[clad_thermal_eigenstrain_xx]
type = ADRankTwoAux
rank_two_tensor = cladding_thermal_eigenstrain
variable = clad_thermal_eigenstrain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = '${cladding_block}'
[]
[fuel_thermal_strain_xx]
type = ADRankTwoAux
rank_two_tensor = fuel_thermal_strain
variable = fuel_thermal_strain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = fuel
[]
[fuel_thermal_strain_yy]
type = ADRankTwoAux
rank_two_tensor = fuel_thermal_strain
variable = fuel_thermal_strain_yy
index_j = 1
index_i = 1
execute_on = 'initial timestep_end'
block = fuel
[]
[fuel_thm_exp]
type = SpatialUserObjectAux
variable = fuel_thm_exp
execute_on = 'initial timestep_end'
user_object = fuel_thm_exp
block = fuel
[]
#OPTD
[assign_pen_thick_aux]
type = ADMaterialRealAux
variable = pen_thick_aux
property = liquid_penetration
block = 'fuel ${cladding_block}'
[]
[assign_total_id_reduction]
type = ParsedAux
variable = total_id_reduction
coupled_variables = 'pen_thick_aux wastage_thickness'
expression = 'pen_thick_aux + wastage_thickness'
block = 'fuel ${cladding_block}'
[]
[]
[Materials]
[fuel_pen]
type = ADMetallicFuelLiquidCladdingPenetration
temperature = temp
mesh_generator = gen
fuel_elongation_pp = max_fuel_elongation
liquid_penetration_model = 'ANL_CONSERVATIVE'
fuel_pu = Pu_0
burnup = burnup
outputs = all
calculate_fuel_melting_thickness = true
block = 'fuel ${cladding_block}'
[]
[longHT9_failure]
type = HT9FailureClad
block = '${cladding_block}'
method = cdf_long
temperature = temp
outputs = all
hoop_stress = stress_zz # Since 2D-RZ
[]
[d_x]
type = ADConstantAnisotropicMobility
tensor = '1e3 0 0
0 1e6 0
0 0 0'
M_name = d_x
[]
[cap_thcond]
type = ADGenericConstantMaterial
prop_names = 'thermal_conductivity specific_heat density'
prop_values = '65 1200 830'
block = 'cap stand'
outputs = all
[]
[interconnected_porosity]
type = ADParsedMaterial
block = 'fuel'
property_name = interconnected_porosity
material_property_names = 'porosity interconnectivity'
expression = 'porosity * interconnectivity'
outputs = all
[]
[fission_rate]
type = ADUPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${fuel_radius}
X_Zr = ${initial_X_Zr}
X_Pu_function = ${X_Pu}
block = 'fuel'
outputs = all
[]
[fission_rate_elongate]
type = ADUPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors_extended
pellet_radius = ${fuel_radius}
X_Zr = ${initial_X_Zr}
X_Pu_function = ${X_Pu}
block = '${cladding_block}'
outputs = all
fission_rate_name = fission_rate
[]
[burnup]
type = ADUPuZrBurnup
initial_X_Zr = ${initial_X_Zr}
initial_X_Pu = ${X_Pu}
density = ${fuel_density}
block = 'fuel'
outputs = all
[]
[burnup_elongate]
type = ADUPuZrBurnup
initial_X_Pu = ${X_Pu}
initial_X_Zr = ${initial_X_Zr}
outputs = all
block = '${cladding_block}'
density = ${fuel_density}
burnup_name = burnup
[]
[fuel_elastic_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'hotpress fuel_upuzrcreep gas_swelling'
block = 'fuel'
outputs = all
[]
[hotpress]
type = ADUPuZrHotPressingStressUpdate
block = 'fuel'
outputs = all
surface_energy = 1.6
plenum_pressure = plenum_pressure
porosity_name = porosity
max_inelastic_increment = 1e-1
interconnectivity = interconnectivity
bubble_concentration = ${bubble_concentration}
temperature = temp
creep_model = MFH
fission_rate = fission_rate
atomic_volume = 2.15e-29
porosity_start = 0.01
porosity_end = 0
grain_boundary_D0 = 4e-29
grain_boundary_Q = 0
absolute_tolerance = 1e-9
[]
[porosity]
type = ADPorosityFromStrain
block = 'fuel'
initial_porosity = 1e-10
inelastic_strain = 'combined_inelastic_strain'
outputs = all
[]
[fuel_elasticity_tensor]
type = ADUPuZrElasticityTensor
X_Zr = ${initial_X_Zr}
X_Pu = ${X_Pu}
youngs_model = LANL
block = 'fuel'
temperature = temp
use_old_porosity = true
outputs = all
output_properties = 'youngs_modulus poissons_ratio'
[]
[fuel_upuzrcreep]
type = ADUPuZrCreepUpdate
block = 'fuel'
temperature = temp
porosity = porosity
use_old_porosity = true
max_inelastic_increment = 1e-1
outputs = all
automatic_differentiation_return_mapping = false
[]
[fuel_thermal_expansion]
type = ADUPuZrThermalExpansionEigenstrain
block = 'fuel'
temperature = temp
stress_free_temperature = 298.0
eigenstrain_name = fuel_thermal_strain
outputs = all
thermal_expansion_model = LANL
X_Zr = ${initial_X_Zr}
X_Pu = ${X_Pu}
[]
[gas_swelling]
type = ADSimpleFissionGasViscoplasticityStressUpdate
temperature = temp
outputs = all
block = 'fuel'
bubble_concentration = ${bubble_concentration}
initial_bubble_concentration = ${bubble_concentration}
compute_interconnectivity = true
fission_gas_yield = 0.3017
fission_rate = fission_rate
initial_atoms_per_bubble = 1e-05
initial_bubble_radius = 1e-15
initial_fgm_dissolved = 0
interconnection_cutoff = 0.99
interconnection_initiating_porosity = 0.23
interconnection_terminating_porosity = 0.25
max_inelastic_increment = 1e-2
retained_gas_fraction = 0.25
interconnection_dependent_retained_gas_fraction = 0.5
surface_energy = 1.6
anisotropic_factor = 0.26
initial_porosity = 1e-10
fuel_melting_function = fuel_melt_func
[]
[solid_swelling]
type = ADBurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = 'fuel'
swelling_name = 'solid_swelling'
outputs = all
anisotropic_factor = 0.26
[]
[metal_fuel_thermal]
type = ADUPuZrThermal
block = 'fuel'
X_Zr = ${initial_X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
porosity = porosity
temperature = temp
outputs = all
porosity_model = logged
sodium_logged_porosity = sodium_logged_porosity
[]
[sodium_logging]
type = ADUPuZrSodiumLogging
block = 'fuel'
porosity = porosity
interconnectivity = interconnectivity
sodium_infiltration_fraction = 0.28
outputs = all
[]
[fuel_density]
type = ADStrainAdjustedDensity
block = 'fuel'
strain_free_density = ${fuel_density}
outputs = all
[]
[fast_neutron_flux]
type = ADFastNeutronFlux
calculate_fluence = true
axial_power_profile = fflux_axial_peaking_factors
rod_ave_lin_pow = flux_history
block = fuel
factor = 1.0
outputs = all
[]
[fast_neutron_flux_elongate]
type = ADFastNeutronFlux
calculate_fluence = true
axial_power_profile = fflux_axial_peaking_factors_elongate
rod_ave_lin_pow = flux_history
block = '${cladding_block}'
factor = 1.0
outputs = all
[]
[cladding_elasticity_tensor]
type = ADHT9ElasticityTensor
temperature = temp
block = '${cladding_block}'
outputs = all
id_wastage_degradation_function = id_vpp_func
od_wastage_degradation_function = od_vpp_func
output_properties = 'youngs_modulus poissons_ratio'
[]
[cladding_stress]
type = ADComputeMultipleInelasticStress
inelastic_models = 'cladding_creep'
block = '${cladding_block}'
outputs = all
[]
[cladding_creep]
type = ADHT9CreepUpdate
block = '${cladding_block}'
temperature = temp
outputs = all
primary_creep_model = MFH
secondary_creep_model = MFH
irradiation_creep_model = MFH
fast_neutron_flux = fast_neutron_flux
[]
[thermal_expansion]
type = ADHT9ThermalExpansionEigenstrain
block = '${cladding_block}'
temperature = temp
stress_free_temperature = 298.0
eigenstrain_name = cladding_thermal_eigenstrain
outputs = all
[]
[cladding_thermal]
type = ADHT9Thermal
block = '${cladding_block}'
temperature = temp
outputs = all
[]
[cladding_density]
type = ADStrainAdjustedDensity
block = '${cladding_block}'
strain_free_density = '${clad_density}'
outputs = all
[]
[wastage_thickness]
type = ADMetallicFuelWastage
method = burnup_ht9_opt
burnup = burnup
temperature = temp
scale_factor = 1
block = '${cladding_block}'
outputs = all
[]
[cc_wastage_thickness]
type = ADMetallicFuelCoolantWastage
clad_material = HT9
use_effective_method = true
temperature = temp
scale_factor = 1
block = '${cladding_block}'
outputs = all
[]
[]
[Dampers]
[disp_x]
type = MaxIncrement
variable = disp_x
max_increment = 1e-3
[]
[disp_y]
type = MaxIncrement
variable = disp_y
max_increment = 1e-3
[]
[temp]
type = MaxIncrement
variable = temp
max_increment = 100
[]
[]
[Preconditioning]
[vcp]
type = VCP
full = true
primary_variable = 'disp_x disp_y temp'
preconditioner = 'LU'
adaptive_condensation = true
lm_variable = 'fuel_cladding_mechanical_normal_lm fuel_cladding_mechanical_tangential_lm inside2outside_thermal_lm'
is_lm_coupling_diagonal = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_ksp_ew -snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_type -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount -snes_force_iteration'
petsc_options_value = 'lu superlu_dist 1e-5 NONZERO 1e-15 1'
line_search = 'none'
snesmf_reuse_base = false
verbose = true
l_max_its = 60
nl_max_its = 100
nl_rel_tol = 5e-6
nl_abs_tol = 5e-9
end_time = '${fparse run_time + total_transient_time}'
dtmin = 1e-5
dtmax = 5.0
automatic_scaling = true
compute_scaling_once = false
off_diagonals_in_auto_scaling = true
ignore_variables_for_autoscaling = 'fuel_cladding_mechanical_normal_lm fuel_cladding_mechanical_tangential_lm inside2outside_thermal_lm'
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = actual_cladding_time_step_limit
dt = 0.01
iteration_window = 4
optimal_iterations = 10
cutback_factor_at_failure = 0.9
growth_factor = 2
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
[]
[_transient_t]
type = ParsedPostprocessor
pp_names = ''
expression = 't-t0'
use_t = true
constant_names = 't0'
constant_expressions = '${run_time}'
[]
# elemental temperatures
[temp_fuel_avg]
type = ElementAverageValue
variable = temp
block = 'fuel'
execute_on = 'initial timestep_end'
[]
[temp_fuel_max]
type = ElementExtremeValue
variable = temp
block = 'fuel'
[]
[temp_fuel_min]
type = ElementExtremeValue
variable = temp
block = 'fuel'
value_type = min
[]
[temp_cladding_avg]
type = ElementAverageValue
variable = temp
block = '${cladding_block}'
[]
[temp_cladding_max]
type = ElementExtremeValue
variable = temp
block = '${cladding_block}'
[]
[temp_cladding_min]
type = ElementExtremeValue
variable = temp
block = '${cladding_block}'
value_type = min
[]
# boundary temperatures
[temp_gas_avg]
type = SideAverageValue
boundary = 'gas_height cladding_inside_top'
variable = temp
execute_on = 'initial timestep_end'
[]
# Beyond gap closure, sodium temperarture is almost the same as the cap.
[temp_sodium_avg]
type = ElementAverageValue
block = 'cap'
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_inside_surfaces_avg]
type = SideAverageValue
boundary = 'inside_surfaces'
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_fuel_centerline_avg]
type = AxisymmetricCenterlineAverageValue
boundary = 'centerline'
variable = temp
[]
[temp_fuel_centerline_max]
type = NodalExtremeValue
boundary = 'centerline'
variable = temp
[]
[temp_fuel_centerline_min]
type = NodalExtremeValue
boundary = 'centerline'
variable = temp
value_type = min
[]
[temp_fuel_surface_avg]
type = SideAverageValue
boundary = 'fuel_outer_radial_surface'
variable = temp
[]
[temp_fuel_surface_max]
type = NodalExtremeValue
boundary = 'fuel_outer_radial_surface'
variable = temp
[]
[temp_fuel_surface_min]
type = NodalExtremeValue
boundary = 'fuel_outer_radial_surface'
variable = temp
value_type = min
[]
[temp_cladding_inside_right_avg]
type = SideAverageValue
boundary = 'cladding_inside_right'
variable = temp
[]
[temp_cladding_inside_right_max]
type = NodalExtremeValue
boundary = 'cladding_inside_right'
variable = temp
[]
[temp_cladding_outside_right_avg]
type = SideAverageValue
boundary = 'cladding_outside_right'
variable = temp
[]
# stresses
[stress_vonmises_fuel_avg]
type = ElementAverageValue
variable = vonmises_stress
block = 'fuel'
[]
[stress_vonmises_fuel_max]
type = ElementExtremeValue
variable = vonmises_stress
block = 'fuel'
[]
[stress_vonmises_fuel_min]
type = ElementExtremeValue
variable = vonmises_stress
value_type = min
block = 'fuel'
[]
[stress_hydro_fuel_avg]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'fuel'
[]
[stress_hydro_fuel_max]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'fuel'
[]
[stress_hydro_fuel_min]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = 'fuel'
[]
[stress_vonmises_cladding_avg]
type = ElementAverageValue
variable = vonmises_stress
block = '${cladding_block}'
[]
[stress_vonmises_cladding_max]
type = ElementExtremeValue
variable = vonmises_stress
block = '${cladding_block}'
[]
[stress_vonmises_cladding_min]
type = ElementExtremeValue
variable = vonmises_stress
value_type = min
block = '${cladding_block}'
[]
[stress_hydro_cladding_avg]
type = ElementAverageValue
variable = hydrostatic_stress
block = '${cladding_block}'
[]
[stress_hydro_cladding_max]
type = ElementExtremeValue
variable = hydrostatic_stress
block = '${cladding_block}'
[]
[stress_hydro_cladding_min]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = '${cladding_block}'
[]
[contact_pressure_max]
type = NodalExtremeValue
variable = fuel_cladding_mechanical_normal_lm
boundary = 'fuel_outer_radial_surface'
[]
# strain information
[strain_solid_swelling_fuel_avg]
type = ElementAverageValue
variable = solid_swelling
block = 'fuel'
[]
[strain_gas_swelling_fuel_avg]
type = ElementAverageValue
variable = effective_fission_gas_strain
block = 'fuel'
[]
[strain_hot_pressing_fuel_avg]
type = ElementAverageValue
variable = effective_hot_pressing_strain
block = 'fuel'
[]
[strain_volumetric_fuel_avg]
type = ElementAverageValue
variable = firstinv_strain
block = 'fuel'
[]
[strain_axial_fuel_avg]
type = ParsedPostprocessor
pp_names = 'disp_y_fuel_top_surface_avg disp_y_fuel_bottom_surface_avg'
expression = '(disp_y_fuel_top_surface_avg - disp_y_fuel_bottom_surface_avg) / ${fuel_height}'
[]
[disp_y_fuel_top_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = 'fuel_top'
[]
[disp_y_fuel_top_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = 'fuel_top'
[]
[disp_y_fuel_bottom_surface_avg]
type = SideAverageValue
variable = disp_y
boundary = 'fuel_bottom'
[]
[disp_y_fuel_bottom_surface_max]
type = NodalExtremeValue
variable = disp_y
boundary = 'fuel_bottom'
[]
[disp_x_fuel_radial_surface_max]
type = NodalExtremeValue
variable = disp_x
boundary = 'fuel_outer_radial_surface'
[]
[disp_x_fuel_radial_surface_avg]
type = SideAverageValue
variable = disp_x
boundary = 'fuel_outer_radial_surface'
[]
[disp_x_cladding_interior_max]
type = NodalExtremeValue
variable = disp_x
boundary = 'cladding_inside_right'
[]
[disp_x_cladding_interior_min]
type = NodalExtremeValue
variable = disp_x
boundary = 'cladding_inside_right'
value_type = min
[]
[disp_x_cladding_interior_avg]
type = SideAverageValue
variable = disp_x
boundary = 'cladding_inside_right'
[]
[disp_x_cladding_exterior_max]
type = NodalExtremeValue
variable = disp_x
boundary = 'cladding_outside_right'
[]
[disp_x_cladding_exterior_avg]
type = SideAverageValue
variable = disp_x
boundary = 'cladding_outside_right'
[]
[anisotropic_swelling_factor]
type = FunctionValuePostprocessor
function = anisotropic_swelling_factor
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = fuel_outside_all
[]
# geometric information
[volume_cladding_interior]
type = InternalVolume
boundary = 'cladding_inside_all'
[]
[volume_fuel]
type = InternalVolume
boundary = 'fuel_outside_all'
execute_on = 'initial timestep_end'
[]
[volume_plenum]
type = InternalVolume
boundary = 'inside_surfaces'
execute_on = 'initial timestep_end'
addition = sodium_volume
[]
[plenum_ratio]
type = ParsedPostprocessor
pp_names = 'volume_plenum volume_fuel'
expression = 'volume_plenum / volume_fuel'
execute_on = 'initial timestep_end'
[]
[volume_sodium]
type = FunctionValuePostprocessor
function = sodium_volume
execute_on = 'initial timestep_end'
[]
# energy information
[flux_clad]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = 'cladding_inside_right'
diffusivity = thermal_conductivity
[]
[flux_fuel]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = 'fuel_contact_surfaces'
diffusivity = thermal_conductivity
[]
[power_integral]
type = ADElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = fuel
[]
[linear_heat_generation_rate]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[burnup_avg]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[burnup_max]
type = ElementExtremeValue
block = fuel
variable = burnup
[]
[fission_rate_avg]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
# fission gas information
[fg_produced]
type = ADElementIntegralMaterialProperty
mat_prop = fgm_produced
block = fuel
[]
[fg_released]
type = ADElementIntegralMaterialProperty
mat_prop = fgm_released
block = fuel
execute_on = 'initial timestep_end'
[]
[fg_percent]
type = FGRPercent
fission_gas_released = fg_released
fission_gas_generated = fg_produced
[]
[interconnected_porosity_fuel_avg]
type = ElementAverageValue
variable = interconnected_porosity
block = fuel
execute_on = 'initial timestep_end'
[]
[porosity_fuel_avg]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[porosity_fuel_max]
type = ElementExtremeValue
variable = porosity
block = fuel
[]
[porosity_fuel_min]
type = ElementExtremeValue
variable = porosity
value_type = min
block = fuel
[]
[porosity_sodium_logging_avg]
type = ElementAverageValue
variable = sodium_logged_porosity
block = fuel
[]
# extras
[actual_time_step_limit]
type = MaterialTimeStepPostprocessor
block = 'fuel ${cladding_block}'
outputs = none
[]
[actual_fuel_time_step_limit]
type = MaterialTimeStepPostprocessor
block = 'fuel'
outputs = 'console'
[]
[actual_cladding_time_step_limit]
type = MaterialTimeStepPostprocessor
block = '${cladding_block}'
outputs = 'console'
[]
[time_step_limit]
type = ParsedPostprocessor
expression = 'if(actual_time_step_limit > 1e6, 1e6, actual_time_step_limit)'
pp_names = 'actual_time_step_limit'
[]
[max_wastagethickness]
type = ElementExtremeValue
value_type = max
variable = wastage_thickness
[]
[max_wst_temp]
type = ElementExtremeValue
value_type = max
variable = temp
proxy_variable = wastage_thickness
block = '${cladding_block}'
[]
[max_wst_burnup]
type = ElementExtremeValue
value_type = max
variable = burnup
proxy_variable = wastage_thickness
block = '${cladding_block}'
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
# OPTD
[temp_tc1]
type = PointValue
point = ${p_tc1}
variable = temp
[]
[temp_tc2]
type = PointValue
point = ${p_tc2}
variable = temp
[]
[temp_tc3]
type = PointValue
point = ${p_tc3}
variable = temp
[]
[temp_tc4]
type = PointValue
point = ${p_tc4}
variable = temp
[]
[temp_tc5]
type = PointValue
point = ${p_tc5}
variable = temp
[]
[temp_tc6]
type = PointValue
point = ${p_tc6}
variable = temp
[]
[max_vm]
type = ElementExtremeValue
value_type = max
block = cladding
variable = vonmises_stress
[]
[max_pen_total]
type = VectorPostprocessorReductionValue
vector_name = total_id_reduction
vectorpostprocessor = id_pen_total
value_type = max
[]
[]
[VectorPostprocessors]
[id_wastage]
type = FuelRodLineValueSampler
variable = wastage_thickness
material = 'clad'
fraction = 0.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[id_pen_total]
type = FuelRodLineValueSampler
variable = total_id_reduction
material = 'clad'
fraction = 0.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[od_wastage]
type = FuelRodLineValueSampler
variable = cc_wastage_thickness
material = 'clad'
fraction = 1.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[fuel_melting]
type = FuelRodLineValueSampler
variable = fuel_melting_thickness
material = 'fuel'
fraction = 1.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[]
[PerformanceMetricOutputs]
outputs = 'console'
[]
[Outputs]
print_linear_residuals = true
color = true
perf_graph = true
sync_times = ${time_spots}
[checkpoint]
type = Checkpoint
time_step_interval = 1
enable = false
[]
[exodus]
type = Exodus
time_step_interval = 500
sync_times = ${time_spots}
enable = false
[]
[ext]
type = Exodus
time_step_interval = 5
enable = true
[]
[console]
type = Console
show = 'time_step_size temp_fuel_avg temp_fuel_centerline_max temp_cladding_avg temp_cladding_max stress_vonmises_fuel_max stress_hydro_fuel_max stress_hydro_fuel_min contact_pressure_max strain_axial_fuel_avg power_integral burnup_avg fission_rate_avg fg_percent porosity_fuel_avg time_step_limit anisotropic_swelling_factor plenum_ratio volume_fuel volume_plenum max_wastagethickness temp_tc1 temp_tc2 temp_tc3 temp_tc4 temp_tc5 temp_tc6 _transient_t max_vm max_pen_total actual_fuel_time_step_limit actual_cladding_time_step_limit max_cdf'
[]
[csv_general]
type = CSV
file_base = 'FM-1/FM-1_csv_general'
[]
[csv_gold]
type = CSV
show = 'temp_tc1 temp_tc2 temp_tc3 temp_tc4 temp_tc5 temp_tc6 _transient_t max_vm max_pen_total max_cdf'
sync_only = true
sync_times = '${fparse run_time+10} ${fparse run_time+20} ${fparse run_time+50} ${fparse run_time+100} ${fparse run_time+200}
${fparse run_time+500} ${fparse run_time+1000} ${fparse run_time+2000} ${fparse run_time+3000} ${fparse run_time+4000}
${fparse run_time+5000} ${fparse run_time+6000}'
file_base = 'FM-1/FM-1_gold'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_C/x441_leg_C.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_swelling'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = MaterialRealAux
variable = porosity
property = porosity
block = pellet
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrain
block = pellet
temperature = temp
# hydrostatic_stress = hydrostatic_stress
hydrostatic_stress = 1e6
eigenstrain_name = fuel_volumetric_swelling
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_legacy_swell
[out2]
type = CSV
file_base = x441_${group_name}_legacy_swell_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_legacy_swell_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_legacy_swell_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/x441_base_legacy_swell.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[porosity]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_swelling'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[porosity]
type = MaterialRealAux
variable = porosity
property = porosity
block = pellet
execute_on = timestep_end
[]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrain
block = pellet
temperature = temp
# hydrostatic_stress = hydrostatic_stress
hydrostatic_stress = 1e6
eigenstrain_name = fuel_volumetric_swelling
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_legacy_swell
[out2]
type = CSV
file_base = x441_${group_name}_legacy_swell_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_legacy_swell_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_legacy_swell_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_legacy_swell_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_H/x441_1_5D_H.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = 15800
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_H/x441_grp_H.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X423/analysis/x423_lm_base.i)
[GlobalParams]
density = ${fuel_density}
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
X_Pu = ${fuel_pu}
X_Zr = ${fuel_zr}
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
[gen]
type = FIPDRodletMeshGenerator
fipd_geom_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} / ${pin_id} _design.csv'}
fipd_as_fabricated_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} / ${pin_id} _as_fabricated.csv'}
gap_bottom_length = 0.31e-3 # arbitrary
cladding_bottom_plug_length = 2.24e-3 # arbitrary
cladding_top_plug_length = 2.24e-3 # arbitrary
cladding_sidewall_radial_elements = 10
cladding_sidewall_axial_element_numbers = '2 150 150'
cladding_top_plug_radial_elements = 10
cladding_top_plug_axial_elements = 5
cladding_bottom_plug_radial_elements = 10
cladding_bottom_plug_axial_elements = 5
fuel_radial_elements = 6
fuel_axial_element_intervals = '0 1'
fuel_axial_element_numbers = '150'
use_default_cladding_sidewall_axial_element_intervals = true
elem_type = QUAD4
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[func_val1]
[]
[func_val2]
[]
# AuxVariables used for thermal expansion correction
[fuel_thermal_strain_xx]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[fuel_thermal_strain_yy]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[fuel_thm_exp]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[clad_thermal_eigenstrain_xx]
order = CONSTANT
family = MONOMIAL
block = cladding
[]
[clad_thm_exp]
order = CONSTANT
family = MONOMIAL
block = cladding
[]
[]
[Functions] #copied from fipd-tdep
[clad_od_temp]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /clad_od_temp_history_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
[]
[power_history]
type = PiecewiseLinear
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /power_history_ ${pin_id} .csv'}
[]
[pwr_axial_peaking_factors]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /peakingfactor_power_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
[]
[pwr_axial_peaking_factors_elongate]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /peakingfactor_power_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
fuel_elongation_pp = max_fuel_elongation
[]
[fflux_axial_peaking_factors]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /peakingfactor_flux_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
extrapolate_to_zero = true
[]
[fflux_axial_peaking_factors_elongate]
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /peakingfactor_flux_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
extrapolate_to_zero = true
fuel_elongation_pp = max_fuel_elongation
[]
[flux_history]
type = PiecewiseLinear
data_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /flux_history_ ${pin_id} .csv'}
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 56465640'
y = '0.151e6 0.151e6'
[]
[id_vpp_func]
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = id_wastage
argument_column = y
wastage_type = ID
value_column = wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[od_vpp_func]
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = od_wastage
argument_column = y
wastage_type = OD
value_column = cc_wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[ci_temp]
type = PiecewiseLinearFromVectorPostprocessor
argument_column = y
component = y
value_column = temp
vectorpostprocessor_name = clad_inn_temp
[]
[na_vol]
type = MeshPropertyFunction
mesh_generator = gen
mesh_property_name = sodium_volume
scale_factor = -1.0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
temperature = temp
[fuel]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
[]
[clad]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = cladding
eigenstrain_names = 'clad_swelling clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie_f]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = fuel
density_name = density
[]
[heat_ie_c]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = cladding
density_name = density
[]
[heat_source]
type = FissionRateHeatSource
variable = temp
fission_rate = fission_rate
block = fuel
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = fuel_outer_radial_surface
[]
[cdf_amount]
block = cladding
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 'cladding_outside_right'
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = cladding
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = cladding
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = cladding
[]
[func_val1]
type = FunctionAux
function = id_vpp_func
variable = func_val1
block = cladding
[]
[func_val2]
type = FunctionAux
function = od_vpp_func
variable = func_val2
block = cladding
[]
# AuxKernels used to correct thermal expansion
[fuel_thermal_strain_xx]
type = RankTwoAux
rank_two_tensor = fuel_thermal_strain
variable = fuel_thermal_strain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = fuel
[]
[fuel_thermal_strain_yy]
type = RankTwoAux
rank_two_tensor = fuel_thermal_strain
variable = fuel_thermal_strain_yy
index_j = 1
index_i = 1
execute_on = 'initial timestep_end'
block = fuel
[]
[fuel_thm_exp]
type = SpatialUserObjectAux
variable = fuel_thm_exp
execute_on = 'initial timestep_end'
user_object = fuel_thm_exp
block = fuel
[]
[clad_thermal_eigenstrain_xx]
type = RankTwoAux
rank_two_tensor = clad_thermal_eigenstrain
variable = clad_thermal_eigenstrain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = cladding
[]
[clad_thm_exp]
type = SpatialUserObjectAux
variable = clad_thm_exp
execute_on = 'initial timestep_end'
user_object = clad_thm_exp
block = cladding
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = cladding_inside_right
secondary = fuel_outer_radial_surface
penalty = 1e12
model = frictionless
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = cladding_inside_right
secondary = fuel_outer_radial_surface
quadrature = true
gap_conductivity = 61.0
min_gap = 0.5e-03
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = fuel_bottom
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = cladding_outside_bottom
value = 0.0
[]
[fuel_top_temp]
type = FunctionDirichletBC
boundary = fuel_top
variable = temp
function = ci_temp
[]
[surf] #copied from fipd-tdep
type = FunctionDirichletBC
variable = temp
boundary = 'cladding_outside_bottom cladding_outside_right cladding_outside_top'
function = clad_od_temp
[]
[Pressure]
[coolantPressure]
boundary = 'cladding_outside_bottom cladding_outside_right cladding_outside_top'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 'fuel_outside_all cladding_inside_all'
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
block = fuel
rod_linear_power = power_history
axial_power_profile = pwr_axial_peaking_factors
use_metadata = true
mesh_generator = gen
outputs = all
[]
[fission_rate_elongate]
type = UPuZrFissionRate
block = cladding
fission_rate_name = fission_rate
rod_linear_power = power_history
axial_power_profile = pwr_axial_peaking_factors_elongate
use_metadata = true
mesh_generator = gen
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Pu = ${fuel_pu}
initial_X_Zr = ${fuel_zr}
density = ${fuel_density}
outputs = all
block = fuel
[]
[burnup_elongate]
type = UPuZrBurnup
initial_X_Pu = ${fuel_pu}
initial_X_Zr = ${fuel_zr}
density = ${fuel_density}
outputs = all
block = cladding
burnup_name = burnup
[]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
rod_ave_lin_pow = flux_history
axial_power_profile = fflux_axial_peaking_factors
block = fuel
factor = 1.0
outputs = all
[]
[fast_neutron_flux_elongate]
type = FastNeutronFlux
calculate_fluence = true
rod_ave_lin_pow = flux_history
axial_power_profile = fflux_axial_peaking_factors_elongate
block = cladding
factor = 1.0
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
block = fuel
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[fuel_volumetric_swelling]
type = UPuZrVolumetricSwellingEigenstrainLM
block = fuel
use_preset_bubble_size = true
anisotropic_factor = 1.26
temperature = temp
fission_rate = fission_rate
burnup = burnup
fis_gas_ret = fis_gas_ret
hydrostatic_stress = hydrostatic_stress
eigenstrain_name = fuel_volumetric_strain
gas_swelling_scale_factor = 1.0
outputs = all
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
displacements = 'disp_x disp_y'
block = fuel
strain_free_density = ${fuel_density}
[]
[fission_gas_behavior]
type = FgrUPuZrLM
block = fuel
temperature = temp
fission_rate = fission_rate
epsilon_c = 0.36
[]
[clad_elasticity_tensor]
type = SS316ElasticityTensor
temperature = temp
id_wastage_degradation_function = id_vpp_func
od_wastage_degradation_function = od_vpp_func
block = cladding
elastic_constants_model = legacy_ifr
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ss316creep'
block = cladding
[]
[clad_ss316creep]
type = SS316CreepUpdate
block = cladding
temperature = temp
fast_neutron_flux = fast_neutron_flux
id_wastage_degradation_function = id_vpp_func
od_wastage_degradation_function = od_vpp_func
[]
[clad_swelling]
type = SS316VolumetricSwellingEigenstrain
eigenstrain_name = clad_swelling
fast_neutron_fluence = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
temperature = temp
outputs = all
[]
[thermal_expansion]
type = SS316ThermalExpansionEigenstrain
block = cladding
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = SS316Thermal
block = cladding
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = cladding
strain_free_density = 7874.0
[]
[longSS316_failure]
type = D9FailureClad
block = cladding
method = steady_state
temperature = temp
outputs = all
hoop_stress = stress_zz # Since 2D-RZ
[]
[wastage_thickness]
type = MetallicFuelWastage
method = flux_ss316
temperature = temp
scale_factor = 1
boundary = cladding_inside_right
outputs = all
[]
[cc_wastage_thickness]
type = MetallicFuelCoolantWastage
clad_material = SS316
use_effective_method = true
temperature = temp
scale_factor = 1
boundary = cladding_outside_right
outputs = all
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50
variable = temp
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 100
l_tol = 1e-3
nl_max_its = 50
nl_rel_tol = 1e-5
nl_abs_tol = 1e-7
end_time = ${time_last}
dtmin = 1
dtmax = ${max_dt}
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_function = power_history
#max_function_change = 300 # Removed to decrease run time
timestep_limiting_postprocessor = creep_timestep
dt = 100
iteration_window = 2
optimal_iterations = 10
force_step_every_function_point = true
[]
[]
[Postprocessors]
[_dt]
type = TimestepSize
outputs = 'csv_general console'
[]
[num_lin_it]
type = NumLinearIterations
outputs = csv_general
[]
[num_nonlin_it]
type = NumNonlinearIterations
outputs = csv_general
[]
[tot_lin_it]
type = CumulativeValuePostprocessor
postprocessor = num_lin_it
outputs = csv_general
[]
[tot_nonlin_it]
type = CumulativeValuePostprocessor
postprocessor = num_nonlin_it
outputs = csv_general
[]
[alive_time]
type = PerfGraphData
section_name = Root
data_type = TOTAL
outputs = csv_general
[]
[ave_temp_interior]
type = SideAverageValue
boundary = cladding_inside_top
variable = temp
execute_on = 'initial linear'
outputs = csv_general
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = centerline
variable = temp
outputs = csv_general
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
outputs = csv_general
[]
[ave_FST]
type = SideAverageValue
boundary = fuel_outer_radial_surface
variable = temp
outputs = csv_general
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
outputs = csv_general
[]
[ave_CIT]
type = SideAverageValue
boundary = cladding_inside_right
variable = temp
outputs = csv_general
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
outputs = csv_general
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = cladding
outputs = csv_general
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = cladding
outputs = csv_general
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
outputs = csv_general
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
outputs = csv_general
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
outputs = csv_general
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = fuel
outputs = csv_general
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
outputs = csv_general
[]
[clad_inner_vol]
type = InternalVolume
boundary = cladding_inside_all
outputs = csv_general
[]
[pellet_volume]
type = InternalVolume
boundary = fuel_outside_all
outputs = csv_general
[]
[gas_volume]
type = InternalVolume
boundary = 'fuel_outside_all cladding_inside_all'
execute_on = 'initial timestep_end'
addition = na_vol
outputs = csv_general
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = fuel_outer_radial_surface
outputs = csv_general
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = fuel_outer_radial_surface
outputs = csv_general
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = cladding_inside_right
diffusivity = thermal_conductivity
outputs = csv_general
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = fuel_outer_radial_surface
diffusivity = thermal_conductivity
outputs = csv_general
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = fuel
outputs = csv_general
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
outputs = csv_general
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
outputs = csv_general
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
outputs = csv_general
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = fuel
outputs = csv_general
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = fuel
execute_on = 'initial timestep_end'
outputs = csv_general
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
outputs = 'csv_general console'
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
outputs = csv_general
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
outputs = csv_general
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
outputs = csv_general
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
outputs = csv_general
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
outputs = csv_general
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
outputs = csv_general
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
outputs = csv_general
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
outputs = csv_general
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = cladding
variable = hoop_creep_strain
outputs = csv_general
[]
[max_clad_creep_strain_mag]
type = ElementExtremeValue
value_type = max
block = cladding
variable = creep_strain_mag
outputs = csv_general
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = cladding
variable = total_hoop_strain
outputs = csv_general
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = fuel_top
outputs = csv_general
[]
[avg_fuel_ax_thm_str]
type = AxisymmetricCenterlineAverageValue
variable = fuel_thermal_strain_yy
boundary = fuel_inner_radial_surface
outputs = csv_general
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'cladding_outside_top cladding_outside_right'
outputs = csv_general
[]
[max_wastagethickness]
type = ElementExtremeValue
value_type = max
variable = wastage_thickness
outputs = 'console'
[]
[avg_fuel_temp]
type = ElementAverageValue
variable = temp
block = fuel
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = csv_general
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = cladding_outside_right
sort_by = y
outputs = none
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = centerline
sort_by = y
outputs = none
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = fuel_outer_radial_surface
sort_by = y
outputs = none
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = cladding_inside_right
sort_by = y
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = cladding_outside_right
sort_by = y
outputs = none
[]
[id_wastage]
type = FuelRodLineValueSampler
variable = wastage_thickness
material = 'clad'
fraction = 0.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[od_wastage]
type = FuelRodLineValueSampler
variable = cc_wastage_thickness
material = 'clad'
fraction = 1.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
# PIE Comparison VPPs
[nrad_comparison_0]
type = FIPDAxialPIEComparison
boundary = fuel_outer_radial_surface
sort_by = y
csv_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /X423_ ${pin_id} _NRAD.csv'}
variable = disp_x
thermal_strain_variable = fuel_thm_exp
involved_component = fuel
mesh_generator = gen
series_type_to_read = 'Fuel O.D. (mils)'
outputs = csv_vpp_0
enable = ${enable_0}
execute_on = 'initial timestep_end'
extra_pp_output_name = 'extra_csv extra_csv_0'
max_fuel_elongation_pp_name = max_fuel_elongation
avg_fuel_ax_thm_str_pp_name = avg_fuel_ax_thm_str
gas_swelling_pp_name = gas_swelling
solid_swelling_pp_name = solid_swelling
[]
[nrad_comparison_a]
type = FIPDAxialPIEComparison
boundary = fuel_outer_radial_surface
sort_by = y
csv_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /X423A_ ${pin_id} _NRAD.csv'}
variable = disp_x
thermal_strain_variable = fuel_thm_exp
involved_component = fuel
mesh_generator = gen
series_type_to_read = 'Fuel O.D. (mils)'
outputs = csv_vpp_a
enable = ${enable_a}
execute_on = 'initial timestep_end'
extra_pp_output_name = 'extra_csv extra_csv_a'
max_fuel_elongation_pp_name = max_fuel_elongation
avg_fuel_ax_thm_str_pp_name = avg_fuel_ax_thm_str
gas_swelling_pp_name = gas_swelling
solid_swelling_pp_name = solid_swelling
[]
[nrad_comparison_b]
type = FIPDAxialPIEComparison
boundary = fuel_outer_radial_surface
sort_by = y
csv_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /X423B_ ${pin_id} _NRAD.csv'}
variable = disp_x
thermal_strain_variable = fuel_thm_exp
involved_component = fuel
mesh_generator = gen
series_type_to_read = 'Fuel O.D. (mils)'
outputs = csv_vpp_b
enable = ${enable_b}
execute_on = 'initial timestep_end'
extra_pp_output_name = 'extra_csv extra_csv_b'
max_fuel_elongation_pp_name = max_fuel_elongation
avg_fuel_ax_thm_str_pp_name = avg_fuel_ax_thm_str
gas_swelling_pp_name = gas_swelling
solid_swelling_pp_name = solid_swelling
[]
[nrad_comparison_c]
type = FIPDAxialPIEComparison
boundary = fuel_outer_radial_surface
sort_by = y
csv_file = ${raw '../../../../../../fipd-bison-integration-data/X423/ ${pin_id} /X423C_ ${pin_id} _NRAD.csv'}
variable = disp_x
thermal_strain_variable = fuel_thm_exp
involved_component = fuel
mesh_generator = gen
series_type_to_read = 'Fuel O.D. (mils)'
outputs = csv_vpp_c
enable = ${enable_c}
execute_on = 'initial timestep_end'
extra_pp_output_name = 'extra_csv extra_csv_c'
max_fuel_elongation_pp_name = max_fuel_elongation
avg_fuel_ax_thm_str_pp_name = avg_fuel_ax_thm_str
gas_swelling_pp_name = gas_swelling
solid_swelling_pp_name = solid_swelling
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_bottom = cladding_outside_bottom
clad_inner_wall = cladding_inside_right
clad_outer_wall = cladding_outside_right
clad_top = cladding_outside_top
pellet_exteriors = fuel_outside_all
[]
[fuel_thm_exp]
type = LayeredAverage
variable = fuel_thermal_strain_xx
direction = y
num_layers = 1000
block = fuel
[]
[clad_thm_exp]
type = LayeredAverage
variable = clad_thermal_eigenstrain_xx
direction = y
num_layers = 1000
block = cladding
[]
[]
[Outputs]
perf_graph = true
color = false
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
sync_times = ${time_spots}
[]
[csv_vpp_0]
type = CSV
sync_only = true
sync_times = ${time_spots_0}
enable = ${enable_0}
create_latest_symlink = true
[]
[csv_vpp_a]
type = CSV
sync_only = true
sync_times = ${time_spots_a}
enable = ${enable_a}
create_latest_symlink = true
[]
[csv_vpp_b]
type = CSV
sync_only = true
sync_times = ${time_spots_b}
enable = ${enable_b}
create_latest_symlink = true
[]
[csv_vpp_c]
type = CSV
sync_only = true
sync_times = ${time_spots_c}
enable = ${enable_c}
create_latest_symlink = true
[]
[csv_general]
type = CSV
sync_times = ${time_spots}
[]
[extra_csv]
type = CSV
sync_only = true
sync_times = ${time_spots_extra}
[]
[extra_csv_0]
type = CSV
sync_only = true
sync_times = ${time_spots_0}
enable = ${enable_0}
[]
[extra_csv_a]
type = CSV
sync_only = true
sync_times = ${time_spots_a}
enable = ${enable_a}
[]
[extra_csv_b]
type = CSV
sync_only = true
sync_times = ${time_spots_b}
enable = ${enable_b}
[]
[extra_csv_c]
type = CSV
sync_only = true
sync_times = ${time_spots_c}
enable = ${enable_c}
[]
[exodus]
type = Exodus
sync_only = true
sync_times = ${time_spots}
[]
[]
(assessment/metallic_fuel/EBRII/X441/analysis/x441_base_1_5D.i)
initial_fuel_density = 15800.0
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
displacements = 'disp_x'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[layered1D_mesh]
type = Layered1DMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
fuel_height = ${pellet_height}
plenum_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
nx_c = 4
slices_per_block = 10
elem_type = EDGE2
[]
# mesh options
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[UserObjects]
[pin_geometry]
type = Layered1DFuelPinGeometry
mesh_generator = layered1D_mesh
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[disp_y]
[]
[disp_z]
[]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '1.0 1.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[clad_axial_pressure]
type = CladdingAxialPressureFunction
plenum_pressure = plenum_pressure
coolant_pressure = coolant_press_ramp
coolant_pressure_scaling_factor = 0.151e6
fuel_pin_geometry = pin_geometry
[]
[fuel_axial_pressure]
type = ParsedFunction
expression = plenum_pressure
symbol_names = plenum_pressure
symbol_values = plenum_pressure
[]
[]
[Physics/SolidMechanics/Layered1D]
[fuel]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = fuel_axial_pressure
generate_output = 'effective_creep_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = fuel
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
mesh_generator = layered1D_mesh
[]
[clad]
strain = FINITE
add_variables = true
add_scalar_variables = true
out_of_plane_strain_name = strain_yy
fuel_pin_geometry = pin_geometry
out_of_plane_pressure_function = clad_axial_pressure
generate_output = 'effective_creep_strain stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
mesh_generator = layered1D_mesh
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = fuel
fission_rate = fission_rate
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = fuel
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '2'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '2'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = fuel
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = fuel
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = fuel
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
temperature = temp
eigenstrain_name = gas_swelling_eigenstrain
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = fuel
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = fuel
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = fuel
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = fuel
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 100
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior] # average temperature of the cladding interior and all pellet exteriors
type = LayeredSideAverageValuePostprocessor
boundary = 9
variable = temp
execute_on = 'initial linear'
fuel_pin_geometry = pin_geometry
[]
[clad_inner_vol] # volume inside of cladding
type = LayeredInternalVolumePostprocessor
boundary = 7
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[pellet_volume] # fuel pellet total volume
type = LayeredInternalVolumePostprocessor
boundary = 8
component = 0
fuel_pin_geometry = pin_geometry
out_of_plane_strain = strain_yy
execute_on = 'initial linear'
#outputs = exodus
[]
[avg_clad_temp] # average temperature of cladding interior
type = LayeredSideAverageValuePostprocessor
boundary = 7
variable = temp
fuel_pin_geometry = pin_geometry
execute_on = 'initial linear'
[]
[gas_volume]
type = LayeredInternalVolumePostprocessor
boundary = 9
execute_on = 'initial linear'
component = 0
out_of_plane_strain = strain_yy
fuel_pin_geometry = pin_geometry
addition = ${gas_addition}
[]
[flux_from_clad] # area integrated heat flux from the cladding
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 5
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[flux_from_fuel] # area integrated heat flux from the fuel
type = LayeredSideFluxIntegralPostprocessor
variable = temp
boundary = 10
diffusivity = thermal_conductivity
fuel_pin_geometry = pin_geometry
[]
[rod_total_power]
type = LayeredElementIntegralPowerPostprocessor
variable = temp
fission_rate = fission_rate
block = fuel
fuel_pin_geometry = pin_geometry
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[fis_gas_produced]
type = LayeredElementIntegralFisGasProducePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
[]
[fis_gas_released]
type = LayeredElementIntegralFisGasReleasePostprocessor
block = fuel
fuel_pin_geometry = pin_geometry
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 41991000'
file_base = x441_${group_name}_1_5D
[out2]
type = CSV
file_base = x441_${group_name}_1_5D_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_1_5D_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_1_5D_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_1_5D_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_1_5D_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_1_5D_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_1_5D_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_1_5D_vec5
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_1_5D_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x temp'
show_var_residual_norms = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_D/x441_grp_D.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/zirconium_diffusion/test.i)
# This is an example of an axial slice from the T179 EBR-II X419 experiment,
# which had 61U-16Pu-23Zr atom%, 71U-19Pu-10Zr wt%.
#
# Most importantly, this test shows that the new calculation method for zirconium
# redistribution matches the old method, to a maximum difference of 3e-3.
[Mesh]
coord_type = RZ
[mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 104
ny = 1
xmax = 0.00216
ymax = 2.16e-05
[]
[]
[Variables]
[T]
[]
[zirconium]
initial_condition = 0.22 #initial mole fraction of Zr in the system
scaling = 1e17
[]
[]
[ICs]
[T]
type = FunctionIC
variable = T
function = outer2
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = T
[]
[ie]
type = HeatConductionTimeDerivative
variable = T
[]
[ZrDiffusion]
type = ZirconiumDiffusion
variable = zirconium
temperature = T
[]
[diffusion_ie]
type = TimeDerivative
variable = zirconium
[]
[heat_source]
type = CoupledForce
variable = T
v = power
[]
[]
[AuxVariables]
[fission_rate]
[]
[power]
[]
[]
[AuxKernels]
[fission_rate_aux]
type = ConstantAux
variable = fission_rate
value = 8.74117559524e+19
[]
[power_aux]
type = ParsedAux
coupled_variables = 'zirconium fission_rate'
constant_names = 'A B epf'
constant_expressions = '-1.12884007 1.24834482 3.2e-11'
expression = 'fission_rate * epf * (A*zirconium + B)'
variable = power
[]
[]
[Functions]
[outer2]
type = ParsedFunction
expression = '918.15-3.2e7*(x*x)' #r^2 initial temperature profile
[]
[]
[BCs]
[temp_rightside]
type = DirichletBC
variable = T
boundary = right
value = 818.15
[]
[]
[Materials]
[porosity]
type = GenericConstantMaterial
block = 0
prop_names = porosity
prop_values = 0.0
[]
[phase]
type = PhaseUPuZr
block = 0
temperature = T
X_Pu = 0.16
X_Zr = zirconium
AB_temp = 936.15
CD_temp = 968.15
[]
[zr_diff]
type = ZrDiffusivityUPuZr
block = 0
temperature = T
X_Pu = 0.16
X_Zr = zirconium
p_alpha = ${fparse 0.35 / 100}
p_delta = ${fparse 0.35 / 2}
p_beta = ${fparse 0.35 / 55}
p_gamma = ${fparse 0.35 / 2}
D0_scale_alpha = 100.0
D0_scale_delta = 2.0
D0_scale_beta = 55.0
D0_scale_gamma = 2.0
[]
[thermal_upuzr]
type = UPuZrThermal
block = 0
temperature = T
X_Pu = 0.16
X_Zr = zirconium
thcond_model = galloway
spheat_model = savage
A_Pu = .244
porosity = porosity
[]
[fuel_density]
type = ParsedMaterial
block = 0
property_name = density
expression = 10431.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart -pc_type -sub_pc_type -pc_hypre_type'
petsc_options_value = ' 1001 hypre hypre boomeramg'
line_search = 'none'
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-9
nl_abs_tol = 1e-18
l_max_its = 1000
dtmax = 1e5
dtmin = 1e-2
end_time = 1e5
[TimeStepper]
type = IterationAdaptiveDT
dt = 1.0e3
optimal_iterations = 25
iteration_window = 3
linear_iteration_ratio = 35
[]
[]
[Outputs]
exodus = true
[]
(assessment/metallic_fuel/EBRII/X441/analysis/group_F/x441_grp_F.i)
initial_fuel_density = 15800.0
[GlobalParams]
density = ${initial_fuel_density}
order = SECOND
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Nominal Design Geometric Parameters (X441)
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = ${clad_thickness}
pellet_outer_radius = ${pellet_outer_radius}
pellet_height = ${pellet_height}
clad_top_gap_height = ${clad_top_gap_height}
clad_gap_width = ${clad_gap_width}
bottom_clad_height = ${top_bot_clad_height}
top_clad_height = ${top_bot_clad_height}
clad_bot_gap_height = 0.2e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 6
ny_p = 260
nx_c = 4
ny_c = 260
ny_cu = ${ny_cu}
ny_cl = ${ny_cl}
pellet_quantity = 1
elem_type = QUAD8
[]
# mesh options
patch_size = 30
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
# Aux variables for output
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[volumetric_strain]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[hoop_creep_strain]
order = CONSTANT
family = MONOMIAL
[]
[hoop_elastic_strain]
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '0 44722 44722 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 42000400'
y = '0.151e6 0.151e6'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 1e5 41990400 42000400'
y = '298.0 648.0 648.0 350.0'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = ${pellet_height}
pellet_y_start = ${pellet_y_start}
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz'
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
# Define kernels for the various terms in the PDE system
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[cdf_amount]
boundary = 2
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
boundary = 2
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[volumetric_strain]
type = RankTwoScalarAux
rank_two_tensor = total_strain
variable = volumetric_strain
scalar_type = VolumetricStrain
execute_on = timestep_end
block = pellet
[]
[hoop_stress]
type = RankTwoAux
rank_two_tensor = stress
variable = hoop_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[hoop_creep_strain]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = hoop_creep_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[hoop_elastic_strain]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = hoop_elastic_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = clad
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = frictionless
formulation = kinematic
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 61.0
min_gap = ${clad_gap_width}
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.84e-3 # m
rod_pitch = 7.48e-3 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = ${pellet_outer_radius}
X_Zr = ${X_Zr}
X_Pu_function = ${X_Pu}
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = ${X_Zr}
initial_X_Pu = ${X_Pu}
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
block = pellet
temperature = temp
[]
[fuel_inelastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = pellet
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrain
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.0
bubble_number_density = 1e20
outputs = all
output_properties = 'porosity gaseous_porosity'
block = pellet
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
X_Zr = ${X_Zr}
X_Pu = ${X_Pu}
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fission_rate = fission_rate
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = clad
[]
[fast_flux]
type = FastNeutronFlux
block = clad
factor = 2.47e19
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = clad
temperature = temp
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = clad
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
boundary = '1 2 3'
method = cdf_long
temperature = temp
hoop_stress = stress_zz # Since 2D-RZ
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 42000400
dtmin = 10
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_postprocessor = creep_timestep
dt = 1e2
time_t = '0 1e5 41990400 42000400'
time_dt = '1e2 1e2 1e2 1e2'
iteration_window = 4
optimal_iterations = 10
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = 12
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = 10
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = 5
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = clad
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = clad
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = pellet
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = pellet
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = pellet
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[clad_inner_vol]
type = InternalVolume
boundary = 7
[]
[pellet_volume]
type = InternalVolume
boundary = 8
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
addition = ${gas_addition}
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = 10
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = 10
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 10
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = pellet
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = pellet
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = pellet
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = clad
variable = hoop_creep_strain
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = clad
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'all_pellet_exterior'
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'clad_outside_top clad_outside_right'
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = 2
sort_by = y
outputs = 'vec1'
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = 12
sort_by = y
outputs = 'vec2'
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = 10
sort_by = y
outputs = 'vec3'
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = 5
sort_by = y
outputs = 'vec4'
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = 2
sort_by = y
outputs = 'vec5'
[]
[clad_total_hoop_strain]
type = LineValueSampler
variable = total_hoop_strain
start_point = '2.90e-3 2.55e-3 0.0'
end_point = '2.90e-3 0.725 0.0'
num_points = 300
sort_by = y
outputs = 'vec6'
[]
[fuel_surf_disp_x]
type = NodalValueSampler
variable = disp_x
boundary = 10
sort_by = y
outputs = 'vec7'
[]
[]
[PerformanceMetricOutputs]
outputs = performance_metrics_file
[]
[Outputs]
time_step_interval = 10
color = true
exodus = true
perf_graph = true
csv = true
sync_times = '1e3 5e3 1e4 5e4 1e5 5e6 1e6 5e6 1e7 2e7 3e7 4e7 41990400 42000400'
file_base = x441_${group_name}_nominal
[out2]
type = CSV
file_base = x441_${group_name}_nominal_out2
time_step_interval = 1
[]
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[chkfile]
type = CSV
file_base = x441_${group_name}_nominal_chkfile
show = 'max_approx_FCT max_ave_FST max_ave_CIT average_burnup fis_gas_percent max_clad_hoop_creep max_fuel_elongation max_clad_elongation max_total_hoop_strain'
execute_on = 'FINAL'
[]
[performance_metrics_file]
type = CSV
file_base = x441_${group_name}_nominal_performance_metrics
show = 'simulation_alive_time number_linear_iterations number_nonlinear_iterations time_step_size total_linear_iterations total_nonlinear_iterations physical_memory_use number_dofs number_nonlinear_variables residual_compute_time jacobian_compute_time'
[]
[vec1]
type = CSV
file_base = x441_${group_name}_nominal_vec1
execute_on = 'FINAL'
[]
[vec2]
type = CSV
file_base = x441_${group_name}_nominal_vec2
execute_on = 'FINAL'
[]
[vec3]
type = CSV
file_base = x441_${group_name}_nominal_vec3
execute_on = 'FINAL'
[]
[vec4]
type = CSV
file_base = x441_${group_name}_nominal_vec4
execute_on = 'FINAL'
[]
[vec5]
type = CSV
file_base = x441_${group_name}_nominal_vec5
execute_on = 'FINAL'
[]
[vec6]
type = CSV
file_base = x441_${group_name}_nominal_vec6
execute_on = 'FINAL'
[]
[vec7]
type = CSV
file_base = x441_${group_name}_nominal_vec7
execute_on = 'FINAL'
[]
[]
[Debug]
show_var_residual = 'disp_x disp_y temp'
show_var_residual_norms = true
[]
(test/tests/upuzr_thermal/infiltration.i)
#
# Tests Billone model with sodium infiltration for thermal conductivity against results from an excel spreadsheet,"infiltration_exact.xlsx". This test ramps porosity, temp and Zr concentration over 3 sec.
# The Na infiltration component is activated by a user input initiating_porosity which is set to .3 in this test. The infiltration distance is .5 which is half of this mesh radially. This means that when
# the porosity is equal to or greater than .3 Na will infiltrate elements 0 and 2 while elem 1 and 3 continue as before.
# In the testing of this model the excel file was compared against the quadrature points using print statements and a gold file was made when satisified.
# Model is a 0.005m radius and 0.005m high RZ pellet with 4 quad4 elements.
#
#
#
# Mesh depiction
# 0.005,0.005
# +---------------------+
# | | |
# |qp1 qp0 |qp1 qp0 |
# | elem1 | elem0 |
# |qp3 qp2 |qp3 qp2 |
# | | |
# +---------------------+
# | | |
# |qp1 qp0 |qp1 qp0 |
# | elem3 | elem2 |
# |qp3 qp2 |qp3 qp2 |
# | | |
# +---------------------+
# 0,0 0.0025,0 0.005,0
#
#
# +-------------------------------------------------------------------------------+
# | th_cond |
#+----------------+----------------+----------------+----------------+-------------------+-------------------+-------------------+-------------------+
#| time | Zr | porosity | temp | elem0 qp0 bison | elem0 qp0 exact | elem1 qp0 bison | elem1 qp0 exact |
#+----------------+----------------+----------------+----------------+-------------------+-------------------+-------------------+-------------------+
#| 0.000000e+00 | 0.000000e+00 | 1.000000e-01 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 | 0.000000e+00 |
#| 1.000000e+00 | 2.000000e-01 | 2.000000e-01 | 8.500000e+02 | 1.116609e+01 | 1.116609e+01 | 1.116609e+01 | 1.116609e+01 |
#| 2.000000e+00 | 3.000000e-01 | 3.000000e-01 | 9.000000e+02 | 1.786838e+01 | 1.786838e+01 | 7.204996e+00 | 7.204996e+00 |
#| 3.000000e+00 | 4.000000e-01 | 4.000000e-01 | 9.500000e+02 | 1.296505e+01 | 1.296505e+01 | 4.454362e+00 | 4.454362e+00 |
#+----------------+----------------+----------------+----------------+-------------------+-------------------+-------------------+-------------------+
[Problem]
solve = false
[]
[Mesh]
coord_type = RZ
[mesh]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
xmax = 0.005
ymax = 0.005
[]
[split]
type = SubdomainBoundingBoxGenerator
bottom_left = '0 0 0'
top_right = '0.0025 0.005 0'
block_id = 1
input = mesh
[]
[]
[AuxVariables]
[temp]
initial_condition = 800.0
[]
[X_Zr]
[]
[]
[AuxKernels]
[temp_aux]
type = FunctionAux
variable = temp
function = '50 * t + 800'
[]
[zr_aux]
type = FunctionAux
variable = X_Zr
function = ramp
[]
[]
[Functions]
[ramp]
type = ParsedFunction
expression = '0.1 * t + 0.1'
[]
[]
[Materials]
[thermal]
type = UPuZrThermal
temperature = temp
X_Pu = 0.16
X_Zr = X_Zr
porosity = porosity
thcond_model = billone
spheat_model = karahan
porosity_model = partially_logged
initiating_porosity = 0.3
Na_depth = 0.5
fuel_outer_radius = .005
outputs = all
[]
[porosity]
type = GenericFunctionMaterial
prop_names = porosity
prop_values = ramp
outputs = all
[]
[]
[Executioner]
type = Transient
end_time = 3
[]
[Postprocessors]
[temp]
type = ElementAverageValue
variable = temp
execute_on = timestep_end
[]
[Zr]
type = ElementAverageValue
variable = X_Zr
execute_on = timestep_end
[]
[porosity]
type = ElementAverageValue
variable = porosity
execute_on = 'initial timestep_end'
[]
[thcond_total]
type = ElementAverageValue
variable = thermal_conductivity
[]
[thcond_left]
type = ElementAverageValue
variable = thermal_conductivity
block = 1
[]
[thcond_right]
type = ElementAverageValue
variable = thermal_conductivity
block = 0
[]
[]
[Outputs]
csv = true
[]
(test/tests/sodium_coolant_channel/dp16_old.i)
# This test applies the old coolant channel model to a realistic geometry, e.g. dp16 from EBR-II.
# Ultimately, this test is important for comparison to the new sodium coolant channel model
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
# rod specific parameters
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
clad_thickness = 0.381e-03
pellet_outer_radius = 2.184e-03
pellet_height = 3.442e-01
clad_top_gap_height = 2.949e-01
clad_gap_width = 3.556e-04
bottom_clad_height = 2.24e-3 # arbitrary
top_clad_height = 2.24e-3 # arbitrary
clad_bot_gap_height = 0.31e-3 # arbitrary
# meshing parameters
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 10
ny_p = 10
nx_c = 10
ny_c = 30
ny_cu = 3
ny_cl = 3
pellet_quantity = 1
[]
# mesh options
partitioner = centroid
centroid_partitioner_direction = y
[]
[DefaultElementQuality]
failure_type = Warning
[]
[Variables]
[temp]
initial_condition = 300
[]
[]
[Kernels]
[heat]
type = ADHeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie_fuel]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = pellet
density_name = 15800
[]
[heat_ie_clad]
type = ADHeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = clad
density_name = 7876
[]
[heat_source]
type = ADFissionRateHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxVariables]
[cdf]
[]
[]
[AuxKernels]
[cdf_aux]
type = FunctionAux
variable = cdf
function = row_4_cdf
[]
[]
[Functions]
[dp16_power]
type = PiecewiseLinear
# min power, weighted avg, max power
x = '0 1'
y = '44734 44734'
[]
[row_4]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 3.442e-01
pellet_y_start = 2.24e-3
zero_beyond_top_and_bottom = true
[]
[row_4_cdf]
type = PowerPeakingFunction
fit = EBRII_ROW_4
pellet_length = 3.442e-01
pellet_y_start = 2.24e-3
zero_beyond_top_and_bottom = true
cdf = true
[]
[]
[FluidProperties]
[sodium_uo]
type = SodiumProperties
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = 'clad_outside_right'
variable = temp
inlet_temperature = 648
inlet_pressure = 1
inlet_massflux = 5261.5 # kg/m^2-sec
coolant_material = sodium
rod_diameter = 5.842e-03 # m
rod_pitch = 6.909e-03 # m (Pitch-to-diameter Ratio = 1.28)
linear_heat_rate = dp16_power
axial_power_profile = row_4
subchannel_geometry = triangular
outputs = all
thermal_conductivity = reg_thermal_conductivity
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 'clad_inside_right'
secondary = 'pellet_outer_radial_surface'
quadrature = true
gap_conductivity = 61.0
min_gap = 3.556E-04
[]
[]
[Materials]
[fission_rate]
type = ADUPuZrFissionRate
rod_linear_power = dp16_power
axial_power_profile = row_4
pellet_radius = 2.184e-03
X_Zr = 0.225
block = pellet
outputs = all
[]
[metal_fuel_thermal]
type = ADUPuZrThermal
block = pellet
X_Zr = 0.225
X_Pu = 0
spheat_model = savage
thcond_model = lanl
porosity = 0
temperature = temp
[]
[clad_thermal]
type = ADHT9Thermal
block = clad
temperature = temp
[]
[convert]
type = MaterialADConverter
ad_props_in = 'thermal_conductivity'
reg_props_out = 'reg_thermal_conductivity'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 40
nl_rel_tol = 5e-4
nl_abs_tol = 1e-7
end_time = 1
dt = .1
[]
[Postprocessors]
[temp_fuel_avg]
type = ElementAverageValue
variable = temp
block = pellet
[]
[temp_fuel_max]
type = ElementExtremeValue
variable = temp
block = pellet
[]
[temp_clad_avg]
type = ElementAverageValue
variable = temp
block = clad
[]
[temp_clad_max]
type = ElementExtremeValue
variable = temp
block = clad
[]
[temp_oulet]
type = ElementExtremeValue
variable = coolant_temperature
[]
[]
[VectorPostprocessors]
[cladding]
type = SideValueSampler
boundary = clad_outside_right
sort_by = y
variable = 'coolant_temperature coolant_channel_htc'
[]
[centerline]
type = SideValueSampler
boundary = centerline
sort_by = y
variable = 'temp'
[]
[]
[Outputs]
[out]
type = CSV
execute_on = final
[]
[]
(assessment/metallic_fuel/EBRII/X447/analysis/legacy/x447_base.i)
[GlobalParams]
density = ${fuel_density}
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11 # J/fission
volumetric_locking_correction = false
displacements = 'disp_x disp_y' # RZ-2D
X_Pu = ${fuel_pu}
X_Zr = ${fuel_zr}
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
group_variables = 'disp_x disp_y'
[]
[Mesh]
coord_type = RZ
# Pin design parameters from FIPD database
[gen]
type = FIPDRodletMeshGenerator
fipd_geom_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} / ${pin_id} _design.csv'}
gap_bottom_length = 0.31e-3 # arbitrary
cladding_bottom_plug_length = 2.24e-3 # arbitrary
cladding_top_plug_length = 2.24e-3 # arbitrary
cladding_sidewall_radial_elements = 10
cladding_sidewall_axial_element_numbers = '2 150 150'
cladding_top_plug_radial_elements = 10
cladding_top_plug_axial_elements = 5
cladding_bottom_plug_radial_elements = 10
cladding_bottom_plug_axial_elements = 5
fuel_radial_elements = 6
fuel_axial_element_intervals = '0 1'
fuel_axial_element_numbers = '150'
use_default_cladding_sidewall_axial_element_intervals = true
elem_type = QUAD4
[]
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[creep_strain_mag]
order = CONSTANT
family = MONOMIAL
[]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[element_failed]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = fuel
order = CONSTANT
family = MONOMIAL
[]
[total_hoop_strain]
order = CONSTANT
family = MONOMIAL
[]
[func_val1] # Just for visualization
[]
[func_val2] # Just for visualization
[]
# AuxVariables used for thermal expansion correction
[fuel_thermal_strain_xx]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[fuel_thm_exp]
order = CONSTANT
family = MONOMIAL
block = fuel
[]
[clad_thermal_eigenstrain_xx]
order = CONSTANT
family = MONOMIAL
block = cladding
[]
[clad_thm_exp]
order = CONSTANT
family = MONOMIAL
block = cladding
[]
[]
[Functions]
[clad_od_temp] # Time-dependent cladding OD temperature from FIPD database
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /clad_od_temp_history_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
[]
[power_history] # Time-dependent pin average power from FIPD database
type = PiecewiseLinear
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /power_history_ ${pin_id} .csv'}
[]
[pwr_axial_peaking_factors] # Power peaking factor from FIPD database; used for fuel related simulations
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /peakingfactor_power_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
[]
[pwr_axial_peaking_factors_elongate] # Power peaking factor from FIPD database; used for cladding related simulations
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /peakingfactor_power_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
fuel_elongation_pp = max_fuel_elongation # pp used to track fuel elongation
[]
[fflux_axial_peaking_factors] # Fast flux peaking factor from FIPD database; used for fuel related simulations
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /peakingfactor_flux_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
extrapolate_to_zero = true
[]
[fflux_axial_peaking_factors_elongate] # Fast flux peaking factor from FIPD database; used for cladding related simulations
type = FIPDAxialProfileFunction
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /peakingfactor_flux_relative_ ${pin_id} .csv'}
use_metadata = true
mesh_generator = gen
zero_ends = true
data_shift_type = peaking
extrapolate_to_zero = true
fuel_elongation_pp = max_fuel_elongation # pp used to track fuel elongation
[]
[flux_history] # Time-dependent pin average fast flux from FIPD database
type = PiecewiseLinear
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /flux_history_ ${pin_id} .csv'}
[]
[flow_rate_history] # Time-dependent flow mass flux from FIPD database; no longer needed if FIPD temperature is used as BC.
type = PiecewiseLinear
data_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /flow_history_ ${pin_id} .csv'}
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 ${time_last}'
y = '0.151e6 0.151e6'
[]
[id_vpp_func] # vpp_function used to track FCCI-related cladding degradation.
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = id_wastage
argument_column = y
wastage_type = ID
value_column = wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[od_vpp_func] # vpp_function used to track CCCI-related cladding degradation.
type = MetallicFuelWastageDegradationFunction
vectorpostprocessor_name = od_wastage
argument_column = y
wastage_type = OD
value_column = cc_wastage_thickness
use_metadata = true
degradation_factor = 0.001
mesh_generator = 'gen'
transition_width = 1E-4
[]
[ci_temp] # vpp_function used to track cladding ID temperature.
type = PiecewiseLinearFromVectorPostprocessor
argument_column = y
component = y
value_column = temp
vectorpostprocessor_name = clad_inn_temp
[]
[na_vol] # Get sodium volume from mesh generator
type = MeshPropertyFunction
mesh_generator = gen
mesh_property_name = sodium_volume
scale_factor = -1.0
[]
[]
[Physics/SolidMechanics/QuasiStatic]
temperature = temp
add_variables = true
[fuel]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz volumetric_strain'
extra_vector_tags = 'ref'
block = fuel
eigenstrain_names = 'fuel_thermal_strain fuel_volumetric_strain'
[]
[clad]
strain = FINITE
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz hoop_stress hoop_creep_strain hoop_elastic_strain'
extra_vector_tags = 'ref'
block = cladding
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie_f]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = fuel
[]
[heat_ie_c]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
block = cladding
[]
[heat_source]
type = FissionRateHeatSource
variable = temp
fission_rate = fission_rate
block = fuel
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = fuel_outer_radial_surface
[]
[cdf_amount]
block = cladding
type = MaterialRealAux
property = cdf_failure
variable = cumulative_damage_index
[]
[failed_element]
block = cladding
type = MaterialRealAux
property = failed
variable = element_failed
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[total_hoop_strain]
type = RankTwoAux
rank_two_tensor = total_strain
variable = total_hoop_strain
index_j = 2
index_i = 2
execute_on = timestep_end
block = cladding
[]
[func_val1]
type = FunctionAux
function = id_vpp_func
variable = func_val1
block = cladding
[]
[func_val2]
type = FunctionAux
function = od_vpp_func
variable = func_val2
block = cladding
[]
# AuxKernels used to correct thermal expansion
[fuel_thermal_strain_xx]
type = RankTwoAux
rank_two_tensor = fuel_thermal_strain
variable = fuel_thermal_strain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = fuel
[]
[fuel_thm_exp]
type = SpatialUserObjectAux
variable = fuel_thm_exp
execute_on = 'initial timestep_end'
user_object = fuel_thm_exp
block = fuel
[]
[clad_thermal_eigenstrain_xx]
type = RankTwoAux
rank_two_tensor = clad_thermal_eigenstrain
variable = clad_thermal_eigenstrain_xx
index_j = 0
index_i = 0
execute_on = 'initial timestep_end'
block = cladding
[]
[clad_thm_exp]
type = SpatialUserObjectAux
variable = clad_thm_exp
execute_on = 'initial timestep_end'
user_object = clad_thm_exp
block = cladding
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = cladding_inside_right
secondary = fuel_outer_radial_surface
penalty = 1e12
model = frictionless
normalize_penalty = true
tangential_tolerance = 1e-3
normal_smoothing_distance = 0.1
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = cladding_inside_right
secondary = fuel_outer_radial_surface
quadrature = true
gap_conductivity = 61.0
min_gap = 0.5e-03 # Adjustable
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = centerline
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = fuel_bottom
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = cladding_outside_bottom
value = 0.0
[]
[fuel_top_temp] # Artificially set fuel top temperature; this could also be a Robin BC. Helps to avoid superhigh fuel top temperature in some extreme cases
type = FunctionDirichletBC
boundary = fuel_top
variable = temp
function = ci_temp
[]
[surf] # Setting temperature BC base on FIPD data
type = FunctionDirichletBC
variable = temp
boundary = 'cladding_outside_bottom cladding_outside_right cladding_outside_top'
function = clad_od_temp
[]
[Pressure]
[coolantPressure]
boundary = 'cladding_outside_bottom cladding_outside_right cladding_outside_top'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 'fuel_outside_all cladding_inside_all'
initial_pressure = 0.084e6 # Pa
startup_time = 0
R = 8.3143
temperature = ave_temp_interior
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
[]
[]
[]
[Materials]
[fission_rate]
type = UPuZrFissionRate
block = fuel
rod_linear_power = power_history
axial_power_profile = pwr_axial_peaking_factors
use_metadata = true
mesh_generator = gen
outputs = all
[]
[fission_rate_elongate]
type = UPuZrFissionRate
block = cladding
fission_rate_name = fission_rate
rod_linear_power = power_history
axial_power_profile = pwr_axial_peaking_factors_elongate
use_metadata = true
mesh_generator = gen
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Pu = ${fuel_pu}
initial_X_Zr = ${fuel_zr}
outputs = all
block = fuel
[]
[burnup_elongate]
type = UPuZrBurnup
initial_X_Pu = ${fuel_pu}
initial_X_Zr = ${fuel_zr}
outputs = all
block = cladding
burnup_name = burnup
[]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
rod_ave_lin_pow = flux_history
axial_power_profile = fflux_axial_peaking_factors
block = fuel
factor = 1.0
outputs = all
[]
[fast_neutron_flux_elongate]
type = FastNeutronFlux
calculate_fluence = true
rod_ave_lin_pow = flux_history
axial_power_profile = fflux_axial_peaking_factors_elongate
block = cladding
factor = 1.0
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
block = fuel
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = fuel
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = fuel
temperature = temp
porosity = porosity
max_inelastic_increment = 2e-3
[]
[fuel_thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = fuel
thermal_expansion_coeff = 1.18e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
outputs = all
[]
[fuel_volumetric_swelling] # Use LIFE-METAL Empirical model
type = UPuZrVolumetricSwellingEigenstrainLM
block = fuel
use_preset_bubble_size = true
anisotropic_factor = 1.26
temperature = temp
fission_rate = fission_rate
burnup = burnup
fis_gas_ret = fis_gas_ret
hydrostatic_stress = hydrostatic_stress
eigenstrain_name = fuel_volumetric_strain
gas_swelling_scale_factor = 1.0
outputs = all
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = fuel
spheat_model = savage
thcond_model = lanl
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
displacements = 'disp_x disp_y'
block = fuel
strain_free_density = ${fuel_density}
[]
[fission_gas_behavior]
type = FgrUPuZrLM
block = fuel
temperature = temp
fission_rate = fission_rate
epsilon_c = 0.36
[]
[clad_elasticity_tensor]
type = HT9ElasticityTensor
temperature = temp
id_wastage_degradation_function = id_vpp_func
od_wastage_degradation_function = od_vpp_func
block = cladding
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_ht9creep'
block = cladding
[]
[clad_ht9creep]
type = HT9CreepUpdate
block = cladding
temperature = temp
fast_neutron_flux = fast_neutron_flux
id_wastage_degradation_function = id_vpp_func
od_wastage_degradation_function = od_vpp_func
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = cladding
thermal_expansion_coeff = 1.2e-5
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
outputs = all
[]
[clad_thermal]
type = HT9Thermal
block = cladding
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = cladding
strain_free_density = 7874.0
[]
[longHT9_failure]
type = HT9FailureClad
block = cladding
method = cdf_long
temperature = temp
outputs = all
hoop_stress = stress_zz # Since 2D-RZ
[]
[wastage_thickness]
type = MetallicFuelWastage
method = burnup_ht9_opt
burnup = burnup
temperature = temp
scale_factor = 1
boundary = cladding_inside_right
outputs = all
[]
[cc_wastage_thickness]
type = MetallicFuelCoolantWastage
clad_material = HT9
use_effective_method = true
temperature = temp
scale_factor = 1
boundary = cladding_outside_right
outputs = all
[]
[]
[Dampers]
[limitT]
type = MaxIncrement
max_increment = 50
variable = temp
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 101' #51
line_search = 'none'
l_max_its = 100
l_tol = 1e-3
nl_max_its = 50
nl_rel_tol = 1e-5
nl_abs_tol = 1e-7
end_time = ${time_last}
dtmin = 1
dtmax = ${max_dt}
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_function = power_history
max_function_change = 300
timestep_limiting_postprocessor = creep_timestep
dt = 100
time_t = '0 9300'
time_dt = '100 100'
iteration_window = 2
optimal_iterations = 10
force_step_every_function_point = true
[]
[]
[Postprocessors]
[ave_temp_interior]
type = SideAverageValue
boundary = cladding_inside_top
variable = temp
execute_on = 'initial linear'
[]
[approx_FCT]
type = AverageNodalVariableValue
boundary = centerline
variable = temp
[]
[max_approx_FCT]
type = TimeExtremeValue
value_type = max
postprocessor = approx_FCT
[]
[ave_FST]
type = SideAverageValue
boundary = fuel_outer_radial_surface
variable = temp
[]
[max_ave_FST]
type = TimeExtremeValue
value_type = max
postprocessor = ave_FST
[]
[ave_CIT]
type = SideAverageValue
boundary = cladding_inside_right
variable = temp
[]
[max_ave_CIT]
type = TimeExtremeValue
value_type = max
postprocessor = ave_CIT
[]
[avg_clad_temp]
type = ElementAverageValue
variable = temp
block = cladding
[]
[peak_clad_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = cladding
[]
[peak_fuel_temp]
type = ElementExtremeValue
variable = temp
value_type = max
block = fuel
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = max
block = fuel
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
value_type = min
block = fuel
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = fuel
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = fuel
[]
[clad_inner_vol]
type = InternalVolume
boundary = cladding_inside_all
[]
[pellet_volume]
type = InternalVolume
boundary = fuel_outside_all
[]
[gas_volume]
type = InternalVolume
boundary = 'fuel_outside_all cladding_inside_all'
execute_on = 'initial timestep_end'
addition = na_vol
[]
[clad_fuel_gap]
type = NodalExtremeValue
variable = penetration
boundary = fuel_outer_radial_surface
[]
[max_cont_press]
type = NodalExtremeValue
variable = contact_pressure
boundary = fuel_outer_radial_surface
[]
[flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = cladding_inside_right
diffusivity = thermal_conductivity
[]
[flux_from_fuel]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = fuel_outer_radial_surface
diffusivity = thermal_conductivity
[]
[rod_total_power]
type = ElementIntegralPower
variable = temp
use_material_fission_rate = true
fission_rate_material = fission_rate
block = fuel
[]
[LHGR_W_per_cm]
type = FunctionValuePostprocessor
function = power_history
scale_factor = 0.01
[]
[average_burnup]
type = ElementAverageValue
block = fuel
variable = burnup
[]
[max_cdf]
type = ElementExtremeValue
value_type = max
variable = cumulative_damage_index
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = fuel
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = fuel
execute_on = 'initial timestep_end'
[]
[creep_timestep]
type = MaterialTimeStepPostprocessor
block = fuel
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = fuel
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = fuel
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = fuel
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = fuel
[]
[fission_rate]
type = ElementAverageValue
variable = fission_rate
block = fuel
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = fuel
[]
[gaseous_porosity]
type = ElementAverageValue
variable = gaseous_porosity
block = fuel
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[max_clad_hoop_creep]
type = ElementExtremeValue
value_type = max
block = cladding
variable = hoop_creep_strain
[]
[max_clad_creep_strain_mag]
type = ElementExtremeValue
value_type = max
block = cladding
variable = creep_strain_mag
[]
[max_total_hoop_strain]
type = ElementExtremeValue
value_type = max
block = cladding
variable = total_hoop_strain
[]
[max_fuel_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = fuel_outside_all
[]
[max_clad_elongation]
type = NodalExtremeValue
variable = disp_y
boundary = 'cladding_outside_top cladding_outside_right'
[]
[max_wastagethickness]
type = ElementExtremeValue
value_type = max
variable = wastage_thickness
outputs = 'console'
[]
[avg_fuel_temp]
type = ElementAverageValue
variable = temp
block = fuel
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
[]
[]
[VectorPostprocessors]
[clad_x_disp]
type = NodalValueSampler
variable = disp_x
boundary = cladding_outside_right
sort_by = y
outputs = none
[]
[fuel_cl_temp]
type = NodalValueSampler
variable = temp
boundary = centerline
sort_by = y
outputs = none
[]
[fuel_surf_temp]
type = NodalValueSampler
variable = temp
boundary = fuel_outer_radial_surface
sort_by = y
outputs = none
[]
[clad_inn_temp]
type = NodalValueSampler
variable = temp
boundary = cladding_inside_right
sort_by = y
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[clad_out_temp]
type = NodalValueSampler
variable = temp
boundary = cladding_outside_right
sort_by = y
outputs = none
[]
[id_wastage]
type = FuelRodLineValueSampler
variable = wastage_thickness
material = 'clad'
fraction = 0.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = csv_wst_a
[]
[od_wastage]
type = FuelRodLineValueSampler
variable = cc_wastage_thickness
material = 'clad'
fraction = 1.0
num_points = 600
orientation = 'vertical'
fuel_pin_geometry = 'pin_geometry'
execute_on = 'initial timestep_end'
allow_duplicate_execution_on_initial = true
outputs = none
[]
[nrad_comparison_a]
type = FIPDAxialPIEComparison
boundary = cladding_outside_right
sort_by = y
csv_file = ${raw '../../../../../../../fipd-bison-integration-data/X447/ ${pin_id} /X447A_ ${pin_id} _PR.csv'}
variable = disp_x
thermal_strain_variable = clad_thm_exp
involved_component = cladding
mesh_generator = gen
series_type_to_read = 'Cladding O.D. (mils)'
outputs = csv_vpp_a
enable = ${enable_a}
[]
[]
[UserObjects]
[pin_geometry]
type = FuelPinGeometry
clad_bottom = cladding_outside_bottom
clad_inner_wall = cladding_inside_right
clad_outer_wall = cladding_outside_right
clad_top = cladding_outside_top
pellet_exteriors = fuel_outside_all
[]
[fuel_thm_exp]
type = LayeredAverage
variable = fuel_thermal_strain_xx
direction = y
num_layers = 1000
block = fuel
[]
[clad_thm_exp]
type = LayeredAverage
variable = clad_thermal_eigenstrain_xx
direction = y
num_layers = 1000
block = cladding
[]
[]
[Outputs]
perf_graph = true
checkpoint = false
color = true
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
sync_times = ${time_spots}
[]
[csv_vpp_a]
type = CSV
sync_only = true
sync_times = ${time_spots_a}
enable = ${enable_a}
execute_postprocessors_on = none
create_latest_symlink = true
[]
[csv_wst_a]
type = CSV
sync_only = true
sync_times = ${time_spots_a}
enable = ${enable_a}
execute_postprocessors_on = none
create_latest_symlink = true
[]
[csv_general]
type = CSV
sync_only = true
sync_times = ${time_spots}
enable = true
[]
[exodus]
type = Exodus
time_step_interval = 20
sync_times = ${time_spots}
enable = false
[]
[]
(examples/metal_fuel/X447_coarse/DP21_test.i)
# This tests UPuZrGaseousEigenstrainwithHotPressingPuSwelling, a swelling model for UPuZr metal fuel
# that allows for further expansion after UPuZrGaseousEignestrain has reached
# terminating porosity. Swelling is allowed to continue if the hydrostatic stress
# within the fuel is negative, and is allowed to shrink when the hydrostatic force
# exceeds the plenum pressure. Thermal stress and mechanical stress caused from FCMI
# is coupled in this example to provide a variable hydrostatic stress, which determines
# the creep rate within the fuel and compressibility of the fuel matrix.
#
# The swelling model is based on Eq. (13.146) in "Fundamental aspects of nuclear
# reactor fuel elements" by Olander.
#
# The fission gas that is released is based on an empirical model
# which states that once the gaseous swelling reaches a value of
# 0.33 (corresponding to a porosity of 0.24812), 80% of the fission gas so far
# produced is immediately released. After that, 100% of the gas produced is released.
# These values were changed to represent experimental EBR-II data within the gas_swelling block.
# For information regarding swelling and porosity, see the above reference or the
# following reference:
# Karahan A., Modeling of Thermo Mechanical and Irradiation Behavior of Metallic
# and Oxide Fuels for Sodium Fast Reactors, Thesis, Massachusetts Institute of Technology 2009.
initial_fuel_density = 15800
[GlobalParams]
order = FIRST
family = LAGRANGE
energy_per_fission = 3.2e-11
displacements = 'disp_x disp_y'
X_Pu = 0.16029880703609925
X_Zr = 0.22566146557004974
temperature = temp
[]
[Problem]
type = AugmentedLagrangianContactProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
[]
[Mesh]
coord_type = RZ
[smeared_pellet_mesh]
type = FuelPinMeshGenerator
include_fuel = true
clad_thickness = 0.000381
pellet_outer_radius = 0.0021971
pellet_height = 0.34417
clad_top_gap_height = 0.3652172
clad_gap_width = 0.0003429
bottom_clad_height = 0.0127
top_clad_height = 0.0127
clad_bot_gap_height = 0.001
clad_mesh_density = customize
pellet_mesh_density = customize
nx_p = 5
ny_p = 25
nx_c = 2
ny_c = 25
ny_cu = 2
ny_cl = 2
pellet_quantity = 1
elem_type = QUAD4
[]
patch_size = 60
patch_update_strategy = auto
partitioner = centroid
centroid_partitioner_direction = y
[]
[Variables]
[temp]
initial_condition = 298
[]
[]
[AuxVariables]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[coolant_htc]
order = CONSTANT
family = MONOMIAL
[]
[cumulative_damage_index]
order = CONSTANT
family = MONOMIAL
[]
[solid_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[gas_swell]
block = pellet
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[power_history]
type = PiecewiseLinear
x = '0 1000 1e4 1.05e4 4.9e4 5e4'
y = '0 1000 40000 39000 42000 0'
[]
[coolant_press_ramp]
type = PiecewiseLinear
x = '0 3.9e7'
y = '151000.0 151000.0'
[]
[coolant_temp_ramp]
type = PiecewiseLinear
x = '0 10000 5.9e4 6e4'
y = '648 648 648 295'
[]
[flow_rate]
type = PiecewiseConstant
x = '0 3.899e7 3.9e7'
y = '5000 5000 5000'
[]
[axial_peaking_factors]
type = PowerPeakingFunction
fit = custom
custom_params = '0.87995117 1.10795043 -1.30983206 0.01018143'
pellet_length = 0.34417
pellet_y_start = 0.0137
[]
[axial_flux_peaking_factors]
type = PowerPeakingFunction
fit = custom
custom_params = '0.79140541 1.73120833 -2.13298844 0.2151691'
pellet_length = 0.34417
pellet_y_start = 0.0137
zero_beyond_top_and_bottom = False
[]
[flux_history]
type = PiecewiseLinear
x = '0 3.899e7 3.9e7'
y = '2.5e19 2.5e19 0'
[]
[]
[Physics/SolidMechanics/QuasiStatic]
strain = FINITE
add_variables = true
generate_output = 'stress_xx stress_yy stress_zz hydrostatic_stress creep_strain_xx creep_strain_yy creep_strain_zz elastic_strain_xx elastic_strain_yy elastic_strain_zz strain_xx strain_yy strain_zz volumetric_strain'
[fuel]
extra_vector_tags = 'ref'
block = pellet
eigenstrain_names = 'fuel_thermal_strain gas_swelling_eigenstrain solid_swelling_eigenstrain'
[]
[clad]
extra_vector_tags = 'ref'
block = clad
eigenstrain_names = 'clad_thermal_eigenstrain'
[]
[]
[Kernels]
[gravity]
type = Gravity
variable = disp_y
value = -9.81
extra_vector_tags = 'ref'
[]
[heat]
type = HeatConduction
variable = temp
extra_vector_tags = 'ref'
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
extra_vector_tags = 'ref'
[]
[heat_source]
type = NeutronHeatSource
variable = temp
block = pellet
fission_rate = fission_rate
extra_vector_tags = 'ref'
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 10
[]
[gas_swell]
type = MaterialRealAux
variable = gas_swell
property = gas_swelling
execute_on = timestep_end
[]
[solid_swell]
type = MaterialRealAux
variable = solid_swell
property = solid_swelling
execute_on = timestep_end
[]
[]
[Contact]
[pellet_clad_mechanical]
primary = 5
secondary = 10
penalty = 1e12
model = coulomb
formulation = augmented_lagrange
friction_coefficient = 0.2
normalize_penalty = true
tangential_tolerance = 0.4
normal_smoothing_distance = 0.1
al_penetration_tolerance = 1e-6
al_incremental_slip_tolerance = 0.8
al_frictional_force_tolerance = 0.8
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
quadrature = true
gap_conductivity = 68.0
tangential_tolerance = 1e-4
min_gap = 0.0003429
[]
[]
[BCs]
[no_x_all]
type = DirichletBC
variable = disp_x
boundary = 12
value = 0.0
[]
[no_y_fuel]
type = DirichletBC
variable = disp_y
boundary = 20
value = 0.0
[]
[no_y_clad]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[]
[Pressure]
[coolantPressure]
boundary = '1 2 3'
function = coolant_press_ramp
[]
[]
[PlenumPressure]
[plenumPressure]
boundary = 9
initial_pressure = 0.084e6
startup_time = 0
R = 8.3143
temperature = ave_temp_plenum
volume = gas_volume
output = plenum_pressure
material_input = fis_gas_released
execute_on = timestep_end
[]
[]
[]
[CoolantChannel]
[convective_clad_surface]
boundary = '1 2 3'
variable = temp
inlet_temperature = coolant_temp_ramp
inlet_pressure = coolant_press_ramp
inlet_massflux = flow_rate
coolant_material = sodium
rod_diameter = 0.005842
rod_pitch = 0.0069
linear_heat_rate = power_history
axial_power_profile = axial_peaking_factors
subchannel_geometry = triangular
[]
[]
[Materials]
[fuel_arr]
type = ArrheniusDiffusionCoef
block = pellet
d1 = 4.47e-8
q1 = 115002
d2 = 0
q2 = 0
gas_constant = 8.3143
[]
[fuel_soret]
type = GenericConstantMaterial
block = pellet
prop_names = Qheat
prop_values = 0.2072896
[]
[wastage_thickness]
type = MetallicFuelWastage
method = flux_ht9
burnup = burnup
temperature = temp
fast_neutron_flux = fast_neutron_flux
scale_factor = 1
boundary = 5
outputs = all
[]
[phase]
type = PhaseUPuZr
X_Pu = 0.16029880703609925
X_Zr = 0.22566146557004974
block = pellet
AB_temp = 965.15
CD_temp = 995.15
outputs = all
calc_H = false
[]
[fission_rate]
type = UPuZrFissionRate
rod_linear_power = power_history
axial_power_profile = axial_peaking_factors
pellet_radius = 0.0021971
block = pellet
outputs = all
[]
[burnup]
type = UPuZrBurnup
initial_X_Zr = 0.22566146557004974
density = ${initial_fuel_density}
block = pellet
outputs = all
[]
[fuel_elasticity_tensor]
type = UPuZrElasticityTensor
block = pellet
temperature = temp
[]
[fuel_elastic_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'fuel_upuzrcreep'
block = pellet
[]
[fuel_upuzrcreep]
type = UPuZrCreepUpdate
block = pellet
temperature = temp
porosity = porosity
max_inelastic_increment = 1e-2
relative_tolerance = 1e-8
fission_rate=fission_rate
[]
[fuel_thermal_expansion]
type = UPuZrThermalExpansionEigenstrain
block = pellet
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = fuel_thermal_strain
[]
[gas_swelling]
type = UPuZrGaseousEigenstrainwithHotPressingPuSwelling
eigenstrain_name = gas_swelling_eigenstrain
temperature = temp
initial_porosity = 0.03185
bubble_number_density = 5e17
interconnection_initiating_porosity = 0.28
interconnection_terminating_porosity = 0.30
creep_rate = creep_rate
hydrostatic_stress = hydrostatic_stress
outputs = all
output_properties = 'porosity gaseous_porosity hot_pressing'
block = pellet
hotpress_scalar = 0.4
plenum_pressure = plenum_pressure
[]
[solid_swelling]
type = BurnupDependentEigenstrain
eigenstrain_name = solid_swelling_eigenstrain
block = pellet
swelling_factor = 1.5
swelling_name = 'solid_swelling'
[]
[metal_fuel_thermal]
type = UPuZrThermal
block = pellet
spheat_model = savage
thcond_model = billone
porosity = porosity
temperature = temp
[]
[fuel_density]
type = StrainAdjustedDensity
block = pellet
strain_free_density = ${initial_fuel_density}
[]
[fission_gas_behavior]
type = UPuZrFissionGasRelease
block = pellet
fractional_yield = 0.25
critical_porosity = 0.29
fractional_fgr_initial = 0.4
fractional_fgr_post = 0.7354
[]
[clad_elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.88e11
poissons_ratio = 0.236
block = clad
[]
[clad_stress]
type = ComputeMultipleInelasticStress
tangent_operator = nonlinear
inelastic_models = 'clad_creep'
block = clad
[]
[fast_neutron_flux]
type = FastNeutronFlux
calculate_fluence = true
block = clad
factor = 1
axial_power_profile = axial_flux_peaking_factors
rod_ave_lin_pow = flux_history
outputs = all
[]
[clad_creep]
type = HT9CreepUpdate
fast_neutron_flux = fast_neutron_flux
block = clad
temperature = temp
[]
[thermal_expansion]
type = HT9ThermalExpansionEigenstrain
block = clad
temperature = temp
stress_free_temperature = 295.0
eigenstrain_name = clad_thermal_eigenstrain
[]
[clad_thermal]
type = HT9Thermal
block = clad
temperature = temp
[]
[clad_density]
type = StrainAdjustedDensity
block = clad
strain_free_density = 7874.0
[]
[clad_volumetric_swelling]
type = HT9VolumetricSwellingEigenstrain
eigenstrain_name = clad_volume_eigenstrain
block = clad
fast_neutron_fluence = fast_neutron_fluence
fast_neutron_flux = fast_neutron_flux
temperature = temp
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_gmres_restart'
petsc_options_value = 'lu superlu_dist 51'
line_search = 'none'
l_max_its = 60
l_tol = 8e-3
nl_max_its = 20
nl_rel_tol = 5e-3
nl_abs_tol = 1e-5
end_time = 1000
dtmin = 1e-12
dtmax = 5e5
[Quadrature]
order = fifth
side_order = seventh
[]
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e2
growth_factor = 2
cutback_factor = 0.01
iteration_window = 5
optimal_iterations = 20
force_step_every_function_point = true
timestep_limiting_function = power_history
time_t = '1e6'
time_dt = '1'
[]
[]
[Postprocessors]
[ave_temp_plenum]
type = SideAverageValue
boundary = 6
variable = temp
execute_on = 'initial linear'
[]
[peak_porosity]
type = ElementExtremeValue
variable = porosity
value_type = max
block = pellet
[]
[gas_hot_pressing]
type = ElementAverageValue
execute_on = timestep_end
variable = hot_pressing
[]
[gas_volume]
type = InternalVolume
boundary = 9
execute_on = 'initial timestep_end'
[]
[fis_gas_produced]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_prod
block = pellet
[]
[fis_gas_released]
type = ElementIntegralMaterialProperty
mat_prop = fis_gas_rel
block = pellet
execute_on = 'initial timestep_end'
[]
[hydrostatic_stress]
type = ElementAverageValue
variable = hydrostatic_stress
execute_on = 'initial timestep_end'
block = pellet
[]
[solid_swelling]
type = ElementAverageValue
variable = solid_swell
block = pellet
[]
[gas_swelling]
type = ElementAverageValue
variable = gas_swell
block = pellet
[]
[volumetric_strain]
type = ElementAverageValue
variable = volumetric_strain
block = pellet
[]
[porosity]
type = ElementAverageValue
variable = porosity
block = pellet
[]
[fis_gas_percent]
type = FGRPercent
fission_gas_released = fis_gas_released
fission_gas_generated = fis_gas_produced
[]
[]
[Outputs]
exodus = true
perf_graph = true
csv = true
[console]
type = Console
max_rows = 25
time_step_interval = 1
output_linear = true
[]
[]
[Dampers]
[max_inc_damp_x]
type = MaxIncrement
max_increment = 3e-4
variable = disp_x
[]
[max_inc_damp_y]
type = MaxIncrement
max_increment = 3e-4
variable = disp_y
[]
[max_inc_temp]
type = MaxIncrement
max_increment = 25
variable = temp
[]
[]